ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Swift 로 iOS 앱 만들기 - 05 : 코드로 view 생성하기 (Then 사용)
    Swift 2019. 7. 3. 13:45

     

    [예제] SnapKit을 이용하여 Label, TextField, Button 을 만들어보자. - 03

    [추가] 코드로 view 생성하는 3가지 방법

     

     

    1. 가장 기본적인 방법

    : viewDidLoad() 안에 작성

     

    버튼과 텍스트 필드에서 색을 지정 해주는 부분에서 각 코드는 주석과 같다.

    UIColor.blue 부분에서 UIColor 를 지우고 쓸 수 있는데, 그 이유는 backgroundColor 변수의 타입 자체가 이미 UIColor 이기 때문에 굳이 UIcolor.blue로 쓰지 않아도 되기 때문이다.

    self.changeButton.backgroundColor = .blue 
    //self.changeButton.backgroundColor = UIColor.blue 
    
    self.nameTextField.backgroundColor = .gray 
    //self.nameTextField.backgroundColor = UIColor.gray

     

     

    이렇게 위치와 속성 까지 지정을 해준 뒤에 디버그를 보면 이렇게 내가 원하는 위치에 배경색과 텍스트를 가진 요소들이 잘 배치되어 있는 것을 확인 할 수 있다.

     

     

    그러나 지금처럼 속성이 하나인 경우에는 보기가 괜찮을 수 있지만, 속성이 저렇게 한 개만 있을리는 없다.
    다양한 view 도 있을 것이며, 그 view 의 속성도 많을 것이다. 또한 후에 추가되는 코드들도 엄청나게 많을 것이다.
    이때, 첫 번째 방법 처럼 viewDidLoad()에 코드를 쓰는 것은 좋지 않다.
    viewDidLoad() 안에는 다양한 기능의 코드들이 엄청나게 들어갈 것이기 때문에 view 의 등록이나 속성 같은 코드는 다른 곳에 쓰는 것이 좋다. 그 방법이 두 번째 방법과 세 번째 방법이다.

     

    2. view를 등록한 곳에서 속성 정의

    : class ViewController 안 viewDidLoad() 밖에 view 를 만들어주는 코드와 속성을 정의해주는 코드를 모두 작성.

    (가독성을 위해서 버튼과 텍스트 필드를 지우고 label만 예를 들었다.)

     

     

    3. Then 사용하기

    : 2번째 방법보다 더! 간단하고 더! 효율적인 Then 을 사용하는 것이다.

     

    ▶ Then 이란?
    :  대한민국의 엄청난 iOS 개발자 전수열님께서 만드신 라이브러리로, 클로저를 사용하여 인스턴스를 생성한 뒤 원하는 처리를 할 수 있는 것으로 코드가 아주 깔끔 해진다고 합니다!

    https://github.com/devxoul/Then

     

    devxoul/Then

    ✨ Super sweet syntactic sugar for Swift initializers - devxoul/Then

    github.com

     

    ▶ Then 라이브러리 적용하기

       1. SnapKit 때 처럼 터미널 → cd 입력 후 → 한 칸 띄우고 원하는 폴더 끌어다 넣기

       2. $ nano podfile 입력

       3. pod 'Then' 입력

     

      4. control+x → y → enter 로 나오기

      5. $pod install 입력

      6. import 하기

    import를 할 때는 UIKit 처럼 기본으로 제공되는 것과 추가 라이브러리를 구분할 수 있게 한 줄 정도 띄우는 것이 좋으며,
    import 하는 라이브러리 알파벳 순으로 입력하는 것이 좋다.

     

     

    ▶ Then 사용하여 코드 작성하기 

    swift then

     

    class 안에 view 를 등록하는 코드를 작성하고 속성은 viewDidLoad()에 적었던 첫 번째 방법과 달리,

    두 번째와 세 번째 방법은 뷰를 만들어준 곳에서 바로 객체화 시키고 속성을 정의 하는 것이다.

    이럴 경우에는 내가 view를 만들어준 곳에서 바로 객체화 시키고 속성을 부여하기 때문에, 찾기 편할 것이고 유지 보수도 편할 것이다. 만약 1번 처럼 썼으면 내가 view를 만든 곳 따로, 속성을 정의해 준 곳 따로 찢어져 있으니 엄청나게 많은 코드가 있을 때 내가 원하는 view의 속성을 바로 바로 찾기 힘들 것이다.


    게다가 세 번째 방법인 Then을 쓰면 두 번째 방법 보다 무려 코드가 두 줄이나 적어지니 Then을 쓰지 않을 이유가 없다.

    물론 결과는 잘 나온다.

     

     

    + ) 스위프트 버튼 만들기  ( swift button )

    button 의 색만 지정을 했었는데, 버튼 이름을 지정할 수 있는 법을 배웠다.

      let Button = UIButton().then {
        $0.backgroundColor = .gray
        $0.setTitle("button", for: .normal)
      }
    

     스위프트에서 버튼에 텍스트를 지정해주고 싶으면 setTitle을 쓰면 된다.

    swift UIButton setTitle

    setTitle(" 원하는 텍스트 " ,  for: 버튼의 상태 )

    버튼의 상태는 여러가지가 있지만, 원하는 특별한 상태가 있으면 그상태로 지정하고 나는 현재 아니기 때문에 nomal로 작성한다.

    버튼의 상태에 대해서는 다음과 같은 여러 상태가 있으니, 상황에 맞는 상태를 입력하면 된다. 

    swift UIButton state

     

     

     

    -

    * 본 글은 글쓴이가 스터디를 하고 배운 내용을 정리하는 식으로 쓰여지기 때문에 완전 초보자의 글입니다. 
    틀린 부분이 있을 수도 있고 글의 흐름이 일정하지 않을 수 있습니다.*

    -

     

    댓글

Designed by Tistory.