[Library] Code Base에서 UI 인스턴스를 직관적으로 만들어보자, Then

2023. 10. 17. 11:45Framework, Library

💡Then이란?

Code Base로 iOS 개발을 할 때, 조금 더 UI 인스턴스를 직관적이고 편하게 만들 수 있도록 도와주는 라이브러리다.
✍🏻 Then 라이브러리 깃허브 살펴보기

클로저를 기반으로 사용한다.
특히, 단축인자 이름을 이용해서 길고긴 뷰 이름을 일일이 작성하지 않고, $0과 같이 간단하게 표현할 수 있다는 것이 인상적이다.

 

💡Then을 설치해보자!

Podfile에 pod 'Then'을 작성해주기만 하면 된다.
✍🏻 Podfile 설치하는 방법을 모르겠다면?

 

💡그래서, 어떻게 Then을 사용하는데?

UI 인스턴스를 선언해 주고, 그 뒤에 then이라는 키워드와 함께 클로저를 열어주기만 하면 되는 아주 간단한 방법이다.

UI 인스턴스를 선언해주고, 그 안에 전달할 UI 객체와 특성을 지정해서 반환까지 시켜줘야 했던 기존 방법과 다르게,

Then을 사용하면, UI 인스턴스를 선언하고 클로저 내부에 별도의 객체 선언과 반환값을 지정해주지 않아도 된다.
UI 인스턴스의 특성을 지정하고 싶으면, 단축인자 $0을 통해 지정해 주면 되겠다.

아래 코드를 통해 Then을 사용하기 전, 후의 코드 길이와 직관성을 비교해 보길 바란다.

    private let locationStackView: UIStackView = {
        let stackView = UIStackView()
        stackView.axis = .vertical
        stackView.distribution = .fillEqually
        stackView.spacing = 15
        return stackView
    }()

    private let locationView: UIImageView = {
        let imageView = UIImageView()
        imageView.image = #imageLiteral(resourceName: "listCloudImage")
        return imageView
    }()

    private let myLocationLabel: UILabel = {
        let label = UILabel()
        label.text = "My Location"
        label.textColor = .white
        label.font = UIFont(name: "SFPro-Heavy", size: 25)
        return label
    }()
    private let locationStackView = UIStackView().then {
        $0.axis = .vertical
        $0.distribution = .fillEqually
        $0.spacing = 15
    }
    private let locationView = UIImageView().then {
        $0.image = #imageLiteral(resourceName: "listCloudImage")
    }
    private let myLocationLabel = UILabel().then {
        $0.text = "My Location"
        $0.textColor = .white
        $0.font = UIFont(name: "SFPro-Heavy", size: 25)
    }