본문 바로가기

iOS/AutoLayout

iOS - Programmatically AutoLayout, Preview

이번엔 스토리보드가 아니라 코드로 오토레이아웃을 잡아보자 

 

 let myFirstView = UIView()
    // 코드로 오토레이 아웃 잡을때 해줘야함
    myFirstView.translatesAutoresizingMaskIntoConstraints = false
    myFirstView.backgroundColor = .systemPink
    // 기존뷰 하위에 서브뷰를 넣는 과정 그 서브뷰는 위에서 정의한 myFirstView
    self.view.addSubview(myFirstView)

 

기존 ViewController의 View에 하위 View 로 들어간다.  

 

 

 

 // x축 y축 위치, 가로,세로
    myFirstView.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true
    // 200만큼 띄우고 이 값을 활성화 한다.
    myFirstView.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 200).isActive = true
    myFirstView.widthAnchor.constraint(equalToConstant: 300).isActive = true
    myFirstView.heightAnchor.constraint(equalToConstant: 300).isActive = true
    }
}

 

나머지 앵커 잡기

스토리보드에서 했던걸 그대로 코드로 옮긴것이다. 

 

 

이렇게 결과물을 볼때마다 빌드하는건 시간도 오래걸리고 번거롭다.

그래서 SwiftUI 로 전처리기를 만들어 미리보기를 만들 수 있다.

 

 

#if DEBUG
import SwiftUI
struct ViewControllerRepresentable : UIViewControllerRepresentable {
    
    //update
    func updateUIViewController(_ uiViewController: UIViewController, context: Context) {
        
    }
    // make ui
    
    @available(iOS 13.0, *)
    func makeUIViewController(context: Context) -> UIViewController {
        ViewController()
    }
}
 


struct ViewController_Previews: PreviewProvider {
    static var previews: some View {
        ViewControllerRepresentable()
    }
}


#endif

 

이 처럼 따로 시뮬레이터에서 빌드를 하지 않아도 바로 코드가 반영되어 볼 수 있다

'iOS > AutoLayout' 카테고리의 다른 글

iOS - Dynamic TableView Cell  (0) 2022.06.19
iOS - Programmatically Animation  (0) 2022.06.09
iOS-StackView  (0) 2022.06.02
iOS-Constraint Priority  (0) 2022.05.30
iOS - ScrollView  (0) 2022.05.29