Patrick's 데이터 세상
iOS - Building Scene 본문
■ 뷰
뷰 : UIView
뷰의 위치와 크기
frame : 위치와 크기, CGRect 구조체
origin ; 위치, CGPoint 구조체
size : 크기, CGSize 구조체
center : 중심 좌표 : CGPoint 구조체
뷰 생성
⊙ 위치와 크기 정보 입력
let frame = CGRect(x: 10, y: 10, width: 100, heightL 100)
let view1 = UIView(frame:frame)
⊙ 뷰 생성 후 frame으로 위치/크기 입력
let view = UIView()
view.frame = CGRect(x: 10, y: 10, width: 100, height: 100)
뷰 색상
색깔 : UIColor
미리 정의된 색
RGBA : 0 ~ 1.0 사이의 값
view.backgroundColor = UIColor.red
view.backgroundColor = UIColor(red: 1.0, green: 0.0, blue: 1.0, alpha: 1.0)
뷰 구조
뷰 출력하기
씬의 루트 뷰
⊙ UIViewController
var view: UIView!
⊙ UIView 클래스
var superview: UIView? {get} // 부모 뷰
var subviews: [UIView] {get} // 자식 뷰
⊙ 자식뷰 추가
func addSubview(_ view: UIView)
⊙ 씬에 뷰 추가하기
let childView = UIView(frame: CGRect(x: 10, y: 10, width: 100, height: 100))
self.view.addSubview(childView)
⊙ 씬에서 삭제
func removeFromSuperview()
⊙ 뷰 구조 중간에 삽입
func insertSubview(_ view: UIView, at index: Int)
⊙ 뷰 구조에서 이동
func bringSubview(toFront view: UIView)
func sendSubview(toBack view: UIView)
뷰 컨트롤러
씬마다 뷰 컨트롤러 존재
UIViewController의 자식 클래스
루트 뷰 : view 프로퍼티
씬의 라이프사이클
씬의 생명주기 관리
씬 생성과 전환에 따른 생명 주기
func viewDidLoad() // 처음에 생성되고 준비될 때
func viewWillAppear(_ animated: Bool) // 뷰가 화면에 나타날 때
func viewWiilLayoutSubviews() // 레이아웃 관련 메서드
func viewDidLayoutSubviews() // 레이아웃 관련 메서드
func viewDidAppear(_ animated: Bool) // 화면이 나타난 이후
func viewWiilDisappear(_ animated: Bool)// 다른 씬에 의해 화면이 사라질 때
func viewDidDisappear(_ animated: Bool) // 다른 씬에 의해 화면이 사라질 때
씬 생명 주기 살펴보기
뷰 구조 다루기 적당한 생명 주기 : viewDidLoad
레이아웃이 반영된 이후 : viewDidLayoutSubviews
override func viewDidLoad() {
super.viewDidLoad()
let childView = UIView(frame: CGRect(x:10, y:10, width:100, height:100))
self.view.addSubview(childView)
}
■ 뷰 제어하기
코드로 뷰 작성한 경우
씬이 나타나고 뷰 속성 변경 예
class ViewController: UIViewController {
var redView : UIView!
override func viewDidAppear(animated: Bool) {
redView.backgroundColor = UIColor.gray
}
override func viewDidLoad() {
redView = UIView(frame:frame)
self.view.addSubview(redView)
}
}
아웃렛
아웃렛 프로퍼티
@IBOutlet 지시자
weak ARC 지시자
강제 언래핑 옵셔널 - nil 가능
class ViewController: UIViewController {
@IBOutlet weak war redView: UIView!
}
아웃렛 연결
아웃렛 프로퍼티 먼저 작성 후 연결
씬에서 뷰 컨트롤러 선택 후 오른쪽 버튼 클릭
연결 정보에서 아웃렛 연결
뷰 선택 후 오른쪽 버튼 클릭
아웃렛 목록
삭제기능
재연결 기능
하나의 뷰 - 다수 아웃렛 연결 가능
아웃렛 프로퍼티와 ARC
코드로 작성한 프로퍼티 : strong(화면에서 삭제 -> 프로퍼티 소유)
인터페이스 빌더로 작성 : weak(화면에서 삭제 -> 객체 해제)
■ 아웃렛 오류
아웃렛 네임 변경 시 발생 오류
'Programming > Swift' 카테고리의 다른 글
iOS - 뷰, 컨텐츠 (0) | 2020.06.23 |
---|---|
error - Thread 1: breakpoint x.x (0) | 2020.06.23 |
iOS - HelloWorld test 프로젝트 생성 (0) | 2020.06.23 |
Swift 클래스 (0) | 2020.06.23 |
Swift 함수 (0) | 2020.06.23 |