UIImageView.contentMode: UIImageView에 UIImage를 채우고 해당 이미지가 어떤 비율로 들어갈지를 정할 때 ContentMode 사용

textField.placeholder
layer
IBAction@IBAction func hello() {}
@는 컴파일러에게 어떤 속성을 가지고 있다고 전하는 역할을 하는 예약어이다. 컴파일러에게 @가 붙은 명령어에 대해 어떤 attribute가 부여되었음을 말한다. 아래의 예시처럼 속성이 부여된다.
@IBAction // Interface Builder와 연결된 Action이다.
@UIApplicationMain // App의 Main이 여기에 있다.
따라서 @IBAction 의 속성이 func의 정의 앞에 붙어있다면, 이 함수는 Interface Builder에서 사용될 수 있고 UI로 연결이 가능하다는 의미를 가진다.
IBOutletGesture단순한 화면 터치, 길게 누르기, 두 손가락으로 확대하기, 화면 넘기기 등 제스처로 이런 다양한 기능들을 할 수 있다.
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
print("touchesBegan is called")
}(실습을 통해 확인해 본) 백 스와이프 제스처
// 네비게이션 백 스와이프 모션으로도 뒤로 가기가 가능하도록 만들어줌
self.navigationController?.interactivePopGestureRecognizer?.delegate = nil
; navigationController의 interactivePopGestureRecognizer의 대리인을 nil로 지정해주기
화면 전환iOS 화면 전환 방법 4가지
UINavigationControllerNavigation Controller는 Container View Controller이므로 내부적으로 다른 컨트롤러를 포함하고 있다. Controller끼리의 화면 이동을 처리해 주고, 현재 위치에 대한 내비게이션 역할을 한다.
따로 View를 포함하고 있지 않으므로 하나의 페이지를 담당하지는 않는다. 다른 Controller와 결합하여 부분적으로 화면을 구성한다. StoryBoard에 2개의 화면으로 구성되어 있으나 실제로는 하나의 화면으로 나타나는 이유도 여기에 있다.

@MainActor class UINavigationController : UIViewController
import UIKit
class RootViewController: UIViewController {
...
func showNavigationController() {
// 선언
let firstVC = UIViewController()
let naviC = UINavigationController(rootViewController: firstVC)
// 화면 띄우기
self.present(naviC, animated: true)
}
...
}
화면 생명 주기: View Controller의 생명주기(Life-Cycle)
이는 화면이 표시되기 전부터 제거된 후까지의 생명주기를 의미한다.

StackView: 열 또는 행에 뷰 집합을 배치하기 위한 간소화된 인터페이스