본 글을 읽기 전에, 먼저 SnapKit에 대해서 읽고 오면 이해하기 쉽다.
Then이란?
Then은 Swift 프로젝트에서 객체를 간결하고 가독성 있게 초기화 할 수 있도록 도와주는 경량 라이브러리이다.
보통 객체를 생성한 후 여러 속성을 설정해야 할 때 사용된다.
SnapKit과 같은 다른 라이브러리와 함께 사용할 때 유용하다.
설치방법
CocoaPods등 다른 방법도 있지만, 본문에서는 SPM(Swift Package Manager)를 통해 설치한다.
프로젝트를 클릭해주고,
좀 내리다 보면, "Framworks, Libraries, and Embedded Content"라는 탭이 있다.
여기서 +를 눌러주고,
하단의 Add Other를 누른 후, Add Package Dependency를 클릭.
그리고 나오는 창의 검색창에서 아래의 링크를 복사 붙여넣기.
AddPackage, AddPackage 클릭 시
이렇게 정상적으로 설치가 완료된 것을 볼 수 있다.
그리고 Then을 사용하고자 하는 곳에서 이렇게 import해주면 사용할 준비는 끝났다.
사용방법
import Then
let label = UILabel().then {
$0.text = "Hello, Then!"
$0.textColor = .black
$0.textAlignment = .center
$0.font = UIFont.systemFont(ofSize: 16)
}
이런 식으로 선언과 동시에 속성값들을 설정해줄 수 있다.
스냅킷에서도 make를 생략하고 $0으로 사용이 가능한데,
Then도 스냅킷처럼 $0을 사용한다.
왜냐하면 둘다 클로저이기 때문이다.
Then을 사용하지 않은 일반적인 경우는 어떻게 작성할까?
// UILabel 생성
let label = UILabel()
label.text = "Hello, World!"
label.textColor = .black
label.textAlignment = .center
label.font = UIFont.systemFont(ofSize: 16)
view.addSubview(label)
평소에 하듯 이런 식으로 작성한다.
좀 더 간결하고 가독성이 좋은 코드를 작성할 수 있다.
또한 진입장벽이 낮아서 익히기에도 어렵지 않다.
SnapKit과의 조합
Then은 SnapKit 없이 단독으로 사용하기에도 유용하다.
하지만 둘이 같이 쓴다면 가독성이 훨씬 좋은 코드로 UI를 구현할 수 있다.
한번 비교해보자.
SnapKit과 Then을 쓰지 않고 작성
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
// UILabel 생성
let label = UILabel()
label.text = "Hello, World!"
label.textColor = .black
label.textAlignment = .center
label.font = UIFont.systemFont(ofSize: 16)
view.addSubview(label)
// 오토레이아웃 설정
label.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
label.centerXAnchor.constraint(equalTo: view.centerXAnchor),
label.centerYAnchor.constraint(equalTo: view.centerYAnchor),
label.widthAnchor.constraint(equalToConstant: 200),
label.heightAnchor.constraint(equalToConstant: 50)
])
}
}
SnapKit과 Then을 쓰고 코드를 작성
import UIKit
import SnapKit
import Then
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
// UILabel 생성 및 설정
let label = UILabel().then {
$0.text = "Hello, World!"
$0.textColor = .black
$0.textAlignment = .center
$0.font = UIFont.systemFont(ofSize: 16)
}
view.addSubview(label)
// SnapKit을 사용한 제약 조건 설정
label.snp.makeConstraints { make in
make.center.equalToSuperview()
make.width.equalTo(200)
make.height.equalTo(50)
}
}
}
코드의 줄 수에서 큰 차이가 있는건 아니지만, 가독성 부분에서 훨씬 강점이 있다.
'OS > iOS' 카테고리의 다른 글
[iOS / Swift] 라이브러리 SnapKit이란? (0) | 2024.12.24 |
---|---|
[Swift / iOS] LaunchScreen 설정 (UIKit, Storyboard) (0) | 2024.12.16 |
코드베이스 UI 작성을 위한 셋팅 (0) | 2024.11.20 |
[iOS] Stack View (0) | 2024.11.19 |
Swift 디버깅 (0) | 2024.11.15 |
살아남는 iOS 개발자가 되기 위해 끊임없이 노력하고 있습니다.