이전 포스트에서는 스냅킷을 사용하는 것에 대한 이점에 대해 알아보았다. 이번에는 이런 스냅킷을 사용해서 화면을 다양하게 분리하고 위치해보는 예제를 다루겠다. 다양한 화면 분할을 연습해보기 위해 화면의 상단에 높이 200 만큼의 뷰를 하나 넣고, 그 아래에 세 개의 뷰를 나란히 배치해보겠다. 다음으로 가장 아래에 남아 있는 모든 공간을 좌우로 정확히 나누고, 또 우측에 두 개의 뷰를 위아래로 배치해보겠다. 먼저 총 7개의 하위 뷰가 필요하기 때문에 아래와 같이 다양한 색깔의 뷰를 생성한다. lazy var pinkView = { let view = UIView() view.backgroundColor = .systemPink return view }() lazy var redView = { let view..
IOS
앞선 포스트에서 언급했듯이 스냅킷은 불편한 코드베이스의 오토레이아웃을 클로저 형태로 간편하게 설정하도록 도와주는 라이브러리이다. 먼저 두개의 label을 생성해준다. let labelA = { let label = UILabel() label.text = "오토레이아웃으로 구현" label.backgroundColor = .orange label.textAlignment = .center return label }() let labelB = { let label = UILabel() label.text = "스냅킷으로 구현" label.backgroundColor = .systemPink label.textAlignment = .center return label }() 첫번째 label을 코드베이스의 ..
iOS 개발을 하게 되면 화면에 보여지게 되는 요소를 표현하기 위해 다양한 UI 처리를 해야 한다. 화면 내 원하는 위치에 특정 뷰를 위치 시키는 방법은 여러 가지가 있다. frame 또는 bounds 코드베이스 AutoLayout 스토리보드를 활용한 AutoLayout SwiftUI SnapKit FelxLayout + PinLayout 기타 다양한 UI 라이브러리 먼저, SwiftUI에 관한 내용은 오늘 다룰 내용과 너무 멀기 때문에 제외하겠다. SwiftUI에 관한 내용은 별도의 포스트에서 따로 다룰 예정이다. 남은 방법 중에서 실제 개발 시에 frame과 bounds 만을 사용해서 개발하는 경우는 거의 없을 것이다. 그 이유는 다양한 사이즈의 디바이스 화면을 대응하는 것에 불리하기 때문이다. 간단..
클래스 정의하기 Objective-C에서는 클래스를 인터페이스와 구현부로 분리해서 작성한다. 헤더파일에는 클래스의 인터페이스를 작성하여 외부에서 클래스의 프로퍼티나 메서드 등에 접근할 수 있게 한다. Xcode에서 코코아 터치 클래스를 생성하면 자동으로 헤더파일과 구현파일이 분리되어 추가되는 것을 확인할 수 있다. 예를 들어, MyRect라는 클래스의 헤더를 작성한다면 아래와 같이 작성할 수 있다. 인터페이스 //MyRect.h #import NS_ASSUME_NONNULL_BEGIN @interface MyRect : NSObject { int width; int height; } -(instancetype)initWithWidth:(int)w height:(int)h; -(int)getSquare; ..
현재 많은 곳에서 iOS를 개발할 때, Swift 언어를 사용해서 개발을 한다. 이 Swift 언어는 애플의 WWDC14에서 공개된 언어이다. 하지만 iOS의 역사는 Swift 공개 이전에 Objective-C라는 언어와 함께해왔다. Objective-C는 80년대부터 사용된 역사가 깊은 언어로 C 언어에서 파생된 객체지향적 언어이다. 스티브 잡스가 이 언어를 애플의 표준 프로그래밍 언어로 사용하기 시작하면서 현재까지도 iOS 개발의 많은 곳에 영향을 끼치고 있다. 실제 현업에서의 코드 중에서 오래된 레거시 코드가 Objective-C로 작성된 것들이 있기도 하고, 다양한 근본 있는(?) 라이브러리를 연결하다 보면 자연스레 이 언어와 마주하는 일이 발생한다. Swift는 Obejctive-C와 긴밀하게 ..