Day 05
모르는 점
- Target-Action 디자인패턴
- Gesture Recognizer 사용법
배운 점
- 뷰의 상태변화와 뷰의 레이아웃 변화를 공부했다.
viewDidLoad: 뷰가 메모리에 로드된 직후 호출되고, 1회 호출된다.
viewWillAppear: 뷰가 표시되기 전에 호출된다. 다른 뷰로 이동했다가 다시 돌아올때도 호출된다.
viewDidAppear: 뷰가 표시되고 나서 호출된다.
viewWillDisappear: 뷰가 계층에서 사라지기 전에 호출된다.
viewDidDisappear: 뷰가 계층에서 사라지고 호출된다.
레이아웃 변화 메서드는 레이아웃의 바운드나 위치등이 변경됐을 때 호출이 된다.
viewWillLayoutSubviews: 서브뷰의 레이아웃을 변경하기 전에 호출된다.
viewDidLayoutSubviews: 서브뷰의 레이아웃이 변경되고 호출된다.
-
UIImagePickerController에 대해서 공부했다. UIImagePickerController의 델리게이트는 필수는 아니지만 사진선택을 해서 가져오는 기능을 구현하기 위해서는 델리게이트를 사용해야 한다. ```swift class ViewController: UIViewController {
lazy var imagePicker: UIImagePickerController = { let imagePicker = UIImagePickerController() imagePicker.delegate = self return imagePicker }()
@IBAction func selectButton() { self.present(imagePicker, animated: true, completion: nil) }
@IBOutlet weak var imageView: UIImageView!
override func viewDidLoad() { super.viewDidLoad() imageView.contentMode = .scaleAspectFit }
}
extension ViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate { func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage { self.imageView.image = image }
self.dismiss(animated: true, completion: nil)
} } ``` <br> - lazy는 프로퍼티가 바로 메모리에 로드되는 것이 아니라 사용하는 시점에 로드된다. 불필요한 메모리 낭비를 피할 수 있다. lazy는 var와 항상 같이 사용해야 하고 class와 struct에서 사용할 수 있다. 그리고 closure를 사용한다. <br> <br>