Swift

코드로 오브젝트 추가

khon98 2021. 2. 6. 00:53

ViewController.Swift에서 코드 작성

 

코드로 만들어진 객체는 기본적으로 constraint 설정이나 크기나 위치에 대한 개념이 없으면 실행해도 보이지 않음

 

크기나 위치에 대한 코드는 frame과 constraints가 있음

 

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        let myButton = UIButton.init(type: .system) // 시스템에서 기본적으로 제공해주는 스타일 타입 적용
        myButton.setTitle("My Button", for: .normal) // 이름은 My Button이라는 기본 상태(.normal)의 버튼
        
        // 뷰 컨트롤러가 가진 뷰 위에 myButton을 올려놓음
        self.view.addSubview(myButton)
        
        // false는 오토 레이아웃을 설정하겠다는 뜻 / true로 하면 오토 레이아웃 설정 안함 그리고 frame 값을 먹음
        myButton.translatesAutoresizingMaskIntoConstraints = false
        
        // 부모 뷰는 self.view
        // constraint 설정은 코드에서는 비활성화 되어 있으므로 활성화를 시켜줘야 함
        // .isActive = true 활성화 코드
        myButton.centerYAnchor.constraint(equalTo: self.view.centerYAnchor).isActive = true
        
        // +는 가운데 기준으로 우측 -는 가운데 기준으로 좌측으로 이동
        // 가운데 기준 우측으로 100만큼 이동
        myButton.centerXAnchor.constraint(equalTo: self.view.centerXAnchor, constant: 100).isActive = true
        
        
        // Label 추가
        let myLabel = UILabel.init()
        myLabel.text = "My Label" // Label에 텍스트 추가
        
        self.view.addSubview(myLabel)
        myLabel.translatesAutoresizingMaskIntoConstraints = false
        
        
        // safeAreaLayoutGuide를 사용하지 않으면 가이드 라인을 침범, 원하는 결과가 아닌 이상한 결과가 나옴
        // 위로 30만큼
        myLabel.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.topAnchor, constant: 30).isActive = true
        
        // 왼쪽으로 100만큼
        myLabel.leftAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.leftAnchor, constant: 100).isActive = true
    }


}