전체 글
IOS - NotificationCenter
특정 개체가 NotificationCenter에 등록된 Event를 발생시키면 해당 Event를 처리하고 등록된 Observer들이 이Event에 대한 행동을 취하는 것. 앱 내에서 아무데서나 메세지를 던지면 앱 내에서 아무데서나 메세지를 받을수 있게 해주는 것 특정 개체가 Event를 발생시키는 것을Post라고 한다 옵저버를 등록해서 Post된 메세지를 받을 수 있다.
IOS - addTarget, @objc
@objc: Swift를 사용한 코드를 Objective-C코드와 상호작용 할 수 있게 쓰는 키워드. Swift를 사용한 코드에서 class나 method에 이 키워드를 붙이면 Objective-C와 Swift 코드에서 사용할 수 있다.. addTarget: func addTarget(_ target: Any?, action: Selector, for controlEvents: UIControl.Event) target 오브젝트와 action메서드를 이어준다. 매개변수 target: action메서드가 호출된 개체를 지정 action: 호출할 작업 메서드를 식별하는 셀렉터(#selector), nil이 아니어야함. controlEvents: 어떠한 일이 발생하면 셀렉터 메서드를 호출할 것인지를 넘겨주어야..
IOS - func touchesBegan
override func touchBegan(_ touches: Set, with event: UIEvent?) 유저가 화면을 터치하면 호출되는 메서드 활용) override func touchesBegan(_ touches: Set, with event: UIEvent?) { self.view.endEditing(true) } 빈 화면을 누르면 키보드나 데이트픽커가 사라진다. 에디팅 모드가 끝난다.
IOS - UserDefaults
Runtime환경에 동작하면서 앱이 실행되는 동안 기본 저장소에 접근해 데이터를 기록하고 가져오는 역할을 하는 인터페이스 "키 - 밸류" 쌍으로 존재하며 앱 전체에 단 하나의 인스턴스만 존재하게됨 스위프트에서 제공되는 double, int, float, boolean와 NSdata, NSString, NSNumber, NSDictionary, NSArrary등 NS관련타입도 저장이 가능하다. 저장: userDefaults.set(value: Any?, forKey: String) value: Any? 에는 data를 넣어주고 forKey: String에는 data의 구분이되는 값을 넣어준다. ex) func saveTasks(){ let data = self.tasks.map{ [ "title": $0...
UIKIT. Asset
업데이트 예정입니다. 에셋엔 다양한 리소스를 추가하고 관리할 수 있습니다. 이미지리소스를 프로젝트에셋 카탈로그에 추가하려면 왼쪽 아래 더하기 버튼을 클릭하면 된다. 다양한 리소스를 추가할 수 있다. 이미지 셋을 추가하게되면 이런 모습의 공간이 나오게되는데 드래그앤 드랍으로 1x, 2x ,3x에 넣어주면 된다. 이미지셋엔 1x, 2x ,3x 모두 추가를 해주어야한다 예를들어 1x가 24px size라면 2x = 48, 3x = 72 사이즈의 이미지를 추가하면된다 다양한 크기의 이미지를 추가하는 이유는 다양한 해상도에서 깨지지 않는 이미지를 추가하기 위함이다.
UIKIT. 화면간 데이터 전달.
화면간 데이터 전달을 하려 할 때엔 화면전환이 가능해진 이후. 화면전환에서 사용했던 옵셔널 바인딩을 약간 수정해야한다. guard let viewController = self.storyboard?.instantiateViewController(withIdentifier: "Storyboard ID") as else { return } 옵셔널 바인딩을 해준 이유는 뷰를 클래스의 인스턴스화 해야하기 때문이다. 데이터 전달을 할 때에도 인스턴스화가 필요하지만 다른 방식의 접근이 필요하다. 옵셔널 바인딩과 다운캐스팅을 사용한다. guard let viewController = self.storyboard?.instantiateViewController(withIdentifier: "CodePushViewCon..
UIKIT. UINavigationController
일단 네비게이션 컨트롤러를 스토리보드에 추가해준다. storyboard entry point를 네비게이션 컨트롤러로 지정해준 후 네비게이션 컨트롤러를 메인뷰와 이어준 뒤 root view controller로 지정해주면 메인 view가 rootview가 된다. 뷰는 스택 자료구조처럼 움직이게된다. First in Lsat out으로 먼저 들어간 계층이 마지막에 나오게 된다 이를 스택 자료구조에선 스택에 넣는다 -> Push, 나오게된다 -> POP Sugue방식 -> 스토리보드에서 버튼을 우클릭 드래그앤 드롭을 view로 하여 쉽게 구현 가능하며, 이동된 뷰는 스택에 PUSH된다. code방식 공통: @IBAction을 만들어 컴포넌트가 작동됐을 경우의 Action함수를 만들어 주어한다. Push(roo..
UIKIT. ViewController Life Cycle
appearing: 뷰가 나타나는중 (상태) appeared: 뷰가 나타남 (상태) disappearing: 뷰가 사라지는중 (상태) disappeared: 뷰가 사라짐(상태) viewDidLoad(): - 뷰가 메모리에 로드됐을 때 호출 - 메모리에 로드될 때 한 번만 호출하지만 root뷰가 아닌 모든 뷰는 사라질 때 메모리에서 내려가게됨. - 주로 초기화 작업을 이메소드에 정의함. viewWillAppear(): - 뷰가 계층에 추가될 때, 화면에 보이기 직전에 호출 - 다른뷰로 이동했다가 돌아오면 호출 viewDidAppear(): - 뷰가 계층에 추가된 후 호출. - 애니메이션을 시작 viewWillDisappear(): - 뷰가 계층에서 사라지기 전에 호출. - 뷰가 생성된 뒤 작업한 내용을 처..
UIKIT - UI컴포넌트와 메서드
지속 업데이트 예정입니다. UIStack View: - 여러 뷰들을 하나로 묶어주는 역할. 속성 인스펙터) Spacing: 뷰 들간의 간격을 설정 UILabel: label.textAlignment = NSTextAlignment.center: //라벨의 텍스트 정렬을 가운데로 label.text = 변수: //라벨의 텍스트를 변수로 만든다. label.sizeToFit(): //라벨의 크기를 텍스트사이즈에 맞게한다. //라벨의 코너를 둥글게 label.clipsToBounds = true label.layer.cornerRadius = 8 label.backgroundColor = .gray //라벨의 배경색 Attribute Inspector - Lines: 라벨의 라인 수를 설정한다. 0으로 설정하..