목록iOS/기본편 | 실전편 -꼼꼼한재은씨 (24)
꾸준히 안타치기
기본 프로필 이미지 터치 -> profile() -> imgPicker()호출 ->imagePickerController()실행-> 앨범에서 선택 or 카메라 사용 -> 이미지 UserDefault에 저장 / 이미지뷰에 적용 이미지 피커 컨트롤러를 사용하기 위해 ProfileVC클래스에 프로토콜을 추가한다. ProfileVC. swift class ProfileVC: UIViewController, UITableViewDelegate, UITableViewDataSource, UIImagePickerControllerDelegate, UINavigationControllerDelegate { 이미지 피커 컨트롤러를 실행할 커스텀 메소드 imgPicker(_:)를 정의한다. 매개변수를 정의하고, 이 매개변..
pe매니저 객체구조 연산 프로퍼티의 활용 개인 프로필 정보저장 - 프로퍼티리스트에 저장하고, 앱 실행시 다시 불러와 화면에 출력하기 UserInfoManager 클래스 정의하기 - 사용자 정보를 관리할 전용 객체를 만들자. 사용자가 설정한 개인정보를 UserDefault 객체에 저장하고, 필요할때 이를 꺼내주는 역할을 담당. 필요에 의해 정의해서 사용하는 커스텀 클래스이다. 따라서 특정 인터페이스를 따르지 않으며 특정 클래스를 서브 클래싱하지도 않는다. 사용자 정보에 접근하는 통로가 일원화되어 데이터 구조가 변경되거나 저장하는 키가 바뀌더라도 매니저 객체 내부에서만 관련코드를 변경하면 된다. 간단한 메소드 호출이나 속성 참조만으로 필요한 데이터를 사용할 수 있고, 코드의 경량화에 도움을 준다. UserI..
ProfileVC.swift파일 생성 import UIKit class ProfileVC: UIViewController { 메인스토리보드에 프로필화면을 처리할 네비게이션 컨트롤러와 뷰컨트롤러를 추가한다. 추가한 뷰 컨트롤러의 Class속성을 ProfileVC로 설정한다. 프론트 컨트롤러 앞에 위치한 네비게이션 컨트롤러를 선택하고, StoryboardID 속성값을 "_Profile"로 입력한다. 어트리뷰터 인스펙터 탭에서 네비게이션 컨트롤러의 HideBar 속성 중 다음 항목에 체크한다. 사용자가 화면을 탭하거나 키보드가 등장했을 때와 같은 특정상황에서 네비게이션바를 숨겨주는 역할을 한다. ProfileVC에 테이블뷰 구현을 위해 필요한 프로토콜을 선언한다. UIImageView, UITableView ..
https://bluedogs.tistory.com/315?category=1003979 에 이어지는내용 메모장 만들기(스토리보드) +배경이미지 + 얼럿창이미지추가 더보기 더보기 더보기 더보기 스토리보드 화면구성 메모 목록화면 구성 프로젝트를 생성하고, 메인스토리보드를 연다. 기본적으로 생성되어있는 viewController.swift와 메인스토리보드의 뷰컨트롤 bluedogs.tistory.com 메모목록에 사이드바 기능 붙이기 사이드바 기능구현 SWRevealViewController메인컨트롤러 라이브러리를 추가한다. / Create BridgingHeader 클릭 에 작성 // // Use this file to import your target's public headers that you wou..
스토리보드 구조 Resource그룹을 만들고 이미지를 추가한다. 커스텀클래스를 3개 만든다. RevealViewController.swift / UIView import UIKit class RevealViewController : UIViewController { } FrontViewController.swift / UIView import UIKit class FrontViewcontroller :UIViewController { } SideBarViewController.swift / 테이블뷰 class SideBarViewController : UITableViewController { } 사이드바 컨트롤러에 스토리보드ID "sw_rear" 입력 _프론트 컨트롤러에 스토리보드ID "sw_front..
피커뷰 구현하기 ( 계정 텍스트뷰를 누르면 화면하단에 피커뷰 등장 ) - 피커뷰는 셀렉트나 콤보박스 등의 기능을 하는 입력용뷰이다. 이미지피커뷰와는 전혀연관이 없다. - 피켜뷰와 테이블뷰는 유사하다. 차이점은 테이블뷰는 UITableViewCell객체를 생성해야하는것 외에 유사함. - 피커뷰는 문자열을 아이템으로 갖는 배열 타입의 데이터 소스를 사용한다. 메인스토리보드를 열고 테이블뷰추가 +네비게이션 컨트롤러 임베디드한다. 테이블뷰 셀을 정적으로 변경 테이블뷰 셀 추가 아래와 같이 화면구성하기 UserDefaluts 계정목록은 공통정보 이므로, 기본저장소에서 관리 계정목록 저장 Plist 데이터를 분리하여 저장할때 편리 / 계정별로 반복되는 정보를 따로 저장해야할때 사용한다. UserDefaluts는 키..
피커뷰 구현하기 ( 계정 텍스트뷰를 누르면 화면하단에 피커뷰 등장 ) - 피커뷰는 셀렉트나 콤보박스 등의 기능을 하는 입력용뷰이다. 이미지피커뷰와는 전혀연관이 없다. - 피켜뷰와 테이블뷰는 유사하다. 차이점은 테이블뷰는 UITableViewCell객체를 생성해야하는것 외에 유사함. - 피커뷰는 문자열을 아이템으로 갖는 배열 타입의 데이터 소스를 사용한다. 메인스토리보드를 열고 테이블뷰추가 +네비게이션 컨트롤러 임베디드한다. 테이블뷰 셀을 정적으로 변경 테이블뷰 셀 추가 아래와 같이 화면구성하기 ListViewController.swift파일 생성후, 스토리보드의 테이블뷰 클래스와 연결한다. 아울렛액션으로 텍스트필드, 이름, 세그먼트컨트롤을 ,스위치버튼을 연결한다. ViewDidLoad메소드를 추가하고, ..
// userDefault에 저장 let plist = UserDefaults.standard plist.setValue(userID, forKey: "name")//이름이라는 키로 저장 plist.synchronize()//동기화처리 //userDefaults에 불러오기 let plist = UserDefaults.standard //지정된 값을 꺼내어 각 컨트롤에 설정한다. self.userName.text = plist.string(forKey: "name") //삭제 UserDefaults.standard.removeObject(forKey: "key") https://qussk.github.io/2021/02/27/swift-UserDefault 참고 https://developer.apple...
프로젝트를 생성하고, 밑에 파일 2개를 추가한다. 팝업창뜨면 Create Bridging Header를 선택( 스위프트가 오브젝트- C파일을 참조할수 있도록 브릿징헤더 파일을 생성하는 옵션) 라이브러리 사용을 위해서는 3개의 뷰 컨트롤러가 필요하다. Chapter04 -SideBar-Bridging-Header.h 파일을 열고 작성 // // Use this file to import your target's public headers that you would like to expose to Swift. // #import "SWRevealViewController.h" Resources폴더를 만들어 사이드바 아이콘을 추가한다. FrontViewContrlloer.swift 파일을 만든다. import..
더보기 더보기 더보기 더보기 스토리보드 화면구성 메모 목록화면 구성 프로젝트를 생성하고, 메인스토리보드를 연다. 기본적으로 생성되어있는 viewController.swift와 메인스토리보드의 뷰컨트롤러를 삭제한다. ->Move to Trash 빈스토리 보드에 네비게이션 컨트롤러를 추가한다.(테이블 뷰 컨트롤러가 자동으로 추가됨) 프로토타입 셀이 선택된 상태에서 인스펙터 탭 -> 높이값 설정 | 테이블뷰전체셀 높이도 동일하게 빈스토리 보드에 네비게이션 컨트롤러를 추가한다.(테이블 뷰 컨트롤러가 자동으로 추가됨) 테이블뷰 전체를 선택하고 프로토타입 셀 값을 2로 설정 / 셀의 갯수가 2개를 의미한다. - 텍스트만 있는 셀1, 텍스트+이미지가 있는셀 2개를 만들것 메모작성화면 구성 목록에 BarButton I..
import UIKit @IBDesignable // 스토리보드미리보기처리 // 액션이벤트를 처리하려면,UIControl를 서브클래싱해야한다. public class CSStepper: UIControl { // 접근제한 범위 설정 public var leftBtn = UIButton(type: .system) // 좌측 버튼 public var rightBtn = UIButton(type: .system) // 우측 버튼 public var centerLabel = UILabel() // 중앙 레이블 //스테퍼의 현재값을 저장할 변수 @IBInspectable // 인터페이스빌더에서도 사용할수있도록함 public var value: Int = 0 { didSet { //프로퍼티의 값이 바뀌면 자동으로 ..
1. code로 구현하기 CSStepper.swift 생성 스테퍼의 현재 값을 저장할 프로퍼티 value를 정의한다. 초기값은 0 기본속성을 설정할 setup메소드 정의, 각 초기화 메소드에 호출하는 구분 추가 뷰의 크기에 따라 내부 객체의 크기를 조절하는 방법에는 두가지가 있는데, 하나는 제약조건을 걸어 자동레이아웃을 설정하는 방법이고, 두번째는 layoutSubview메소드를 사용하는 방법이다. layoutSubview메소드를 추가한다. 외부에서 호출할수 있도록 public으로 호출한다. 버튼과 레이블의 사이즈를 계산식으로 구현해 상수에 대입한다. import UIKit @IBDesignable // 스토리보드미리보기처리 public class CSStepper: UIView { // 접근제한 범위 ..
커스텀 탭바 컨트롤러 만들기 메인스토리 보드에서 탭바 컨트롤러를 추가한다. 연결된 뷰컨트롤러를 삭제하고(있는거 사용하면 버그있다함), 뷰컨트롤러 3개를 각자 연결을 다시해준다. 탭바에 연결한 뷰컨트롤러의 StoryboardID를 작성한다. VIEW01, VIEW02,VIEW03 CSTabBarController.swift파일을 생성한다. import UIKit // 탭바컨트롤러클래스를 상속받아야한다. class CSTabBarController :UITabBarController{ //뷰하나(탭바역할)와 버튼3개(탭바이이템) 생성 let csView = UIView() let tabItem01 = UIButton(type: .system) let tabItem02 = UIButton(type: .syst..
1) CSButton2.swift / 커스텀클래스 작성후, 스토리보드에서 연결해서 버튼 만들기 1.버튼 클래스를 만들고, 스토리보드에서 사용하는 초기화 메소드 init을 한다. import UIKit class CSButton2 :UIButton { // 스토리보드에서 사용하는 초기화 메소드는 init(coder:)로 정해져 있다. required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder)! // 스토리보드 방식으로 버튼을 정의했을때 적용됨 self.backgroundColor = .green self.layer.borderWidth = 2 self.layer.borderColor = UIColor.black.cgColor self.set..