frame vs bounds (1) [ CGPoint, CGSize, CGRect ]
·
iOS/UIKit
이번 학습부터는 많이 헷갈리는 주제인 Frame과 bounds관련에서 시작해보자. 먼저 Frame과 bounds를 들어가기 전에 선행해서 학습하면 좋을 개념들을 학습해보자.  1. CGPoint public struct CGPoint { public init() public init(x: Double, y: Double) public var x: Double public var y: Double}  View의 위치를 나타날 때 사용하는 좌표 값을 타나내는 정보이다.x와 y 값은 Double로 되어있고 기준은 왼쪽 위가 된다.      2. CGSizepublic struct CGSize { public init() public init(width: Double, heigh..
생명주기 (4) [ 업데이트 Cycle ]
·
iOS/UIKit
애니메이션과 트랜지션과 같은 조금 더 개선된 UX를 주기 위해 다양한 코드를 적었는데 원하는 대로 동작하지 않는 경우가 자주 발생하고 나는 그게 View Rendenring을 재대로 이해하지 못하고 있는 것 같다. 그래서 이번에는 생명주기의 마지막 시간은Update Cycle에 대해 학습해보자. 앱이 실행되면 어떤 일이 일어날까?1. main 함수가 실행된다. 2. main 함수는 UIApplicationMain 함수를 호출한다. 3. UIApplicationMain은 UIApplication 인스턴스를 생성한다. 4. Info.plist에서 필요한 데이터를 로드한다. main Nib 파일을 여기서 찾아 로드한다. 5. UIApplication은 AppDelegate 인스턴스를 생성하고 UIApplica..
생명주기 (3) [ View 생명주기 ]
·
iOS/UIKit
오늘은 iOS 생명주기의 마지막 단계인 View의 생명주기에 대해 알아보자. 전체적인 생명주기는 다음 그림과 같다. init1) init((coder:))스토리보드나 xib파일은 활용하여 화면을 만들 때 컴파일러가 인식할 수 있게 코드로 변환해주는 과정에서 사용한다.코드 base로 작성했을 때는 required init 형태로 선언만 해줘야한다. 어차피 호출되지 않는다. 2) awakeFromNib()인터페이스 빌더 또는 nib 파일에서 로드된 후 생성되는 메소드이다.Nib/Xib 파일이 언아카이브되고 나서 init(coder: NSCoder)로 모든 객체가 초기화가 완료되었을 때 호출된다.마찬가지로 코드 base로 작성되었을 때는 호출되지 않는다.  3) init((frame: ))View의 인스턴스를..
UIKit 코드 베이스 셋팅
·
iOS/UIKit
이번에는 UIKit으로 코드 베이스 개발 시 불필요한 스토리보드를 제거하는 방법을 학습해보자. Storyboard 제거 코드베이스로 구현을 할 예정이기 때문에 불필요한 스토리보드들을 삭제한다. Main과 LaunchScreen 스토리보드를 제거 한다. Main 스토리보드만 제거한다.LaunchScreen은 앱 시작시점에 스크린 크기 잡는 역할을 한다.만약 LaunchScreen이 없다면 스크린 크기를 아는 시점이 뒤로 밀린다. Info.plist첫번 째는 info.plist에 있는 Scene Configuration에 있는 Storyboard Name을 제거한다. Target타겟의 buildSettingd에서 UIKit Main Storyboard File Base Name 항목을 제거 SceneDel..
생명주기 (2) [ ViewController 생명주기 ]
·
iOS/UIKit
이전 학습은 iOS 앱의 전체적인 생명주기를 봤다면 이번에는 조금 더 작은 단위인 ViewController의 생명주기를 학습할껀데. 각 콜밸 함수의 호출 시기와 역할로 구분해서 학습해보자.  1. loadView역할ViewController는 메모리에 올라온 후, 인스턴스 메서드인 loadView()를 통해 화면(view)을 메모리에 올린다. ⚠️ 스토리보드(Interface Builder)를 통해 View를 생성 및 초기화하는 경우 loadView() 메서드를 재정의해서는 안된다. 만약 view를 수동으로(코드로) 생성했다면 loadView()를 재정의해서 ViewController의 view에 직접 생성한 view를 할당 한다. ( super.loadView() 불필요 )2. viewDidLoad호..
생명주기 (1) [ iOS 앱 생명주기, Scene 생명주기 ]
·
iOS/UIKit
이번 학습부터는 iOS의 여러가지 생명 주기를 학습해보자. 처음은 가장 큰 생명주기인 Scene과 App의 생명주기에 해당되는 단계와그 단계에 포함되는 콜백함수들을 짝지어 학습해보자.App Life CycleiOS 12 이하 버전에서는 scene을 지원하지 않기 때문에 UIkit의 모든 life-cycle 관련 이벤트들은UIApplicationDelegate 객체에서 처리한다. 1. Not Running앱이 실행되지 않았거나 완전히 종료되어 동작하지 않는 상태 // 앱 최초로 실행할 코드 작성// 앱 실행 준비가 끝가지 직전에 호출 // main storyboard 또는 nib 파일이 로드된 후// 실행된 후 InActive 상태가 된다.func application( _ application: ..