viewWillLayoutSubviews() 뷰의 bounds가 변하면 뷰는 하위 뷰들의 위치를 조정하는데, 레이아웃이 결정되기 전에 다음과 같은 작업을 수행하고자 할때 이 메서드를 override하여 사용 뷰들을 추가하거나 제거 뷰들의 크기나 위치를 업데이트 레이아웃 constraint를 업데이트 뷰와 관련된 기타 프로퍼티들을 업데이트 layoutSubviews() 뷰의 크기가 변경될 때마다 이에 대응하여 하위 뷰들의 크기&위치 변경되어야 함 -> auto layout을 사용하면 각 뷰의 autoresizingMask프로퍼티를 설정하여 상위 뷰의 크기가 변경되었을 때 어떻게 대응할 지 규칙을 정할 수 있음 뷰의 크기에 변경이 발생하면 우선 하위 뷰들의 autoresizing 동작을 적용하는데, 변경사항..
UploadPostController.swift에서 프로토콜을 선언해주고 해당 프로토콜을 상속받는 delegate라는 변수를 만들어준다. 이제 해당 delegate를 사용할 곳에서 이렇게 선언을 해주고 이 delegate를 처리할 다른 뷰 컨트롤러에서 이렇게 extension을 사용하여 해당 프로토콜을 상속받고 프로토콜에 전달된 함수를 구현하여 기능을 처리한다.
let gradient = CAGradientLayer() gradient.colors = [UIColor.systemPurple.cgColor, UIColor.systemBlue.cgColor] gradient.locations = [0,1] view.layer.addSublayer(gradient) gradient.frame = view.frame gradient.locations = [0,1]의 숫자를 [0],[0.5]...[1] 이런식으로 변경하면 그라데이션의 효과를 다르게 줄 수 있다.