UIScrollView를 컨테이너뷰로 사용했을 때 오토레이아웃 문제


*UIScrollView는 고유한 콘텐츠 크기(intrinsic content size)가 없다 ⇒ 내부 컨텐츠들로 사이즈가 결정됨

*UIScrollView에 오토레이아웃을 거는건 크기가 아니라 프레임을 결정한다

private let containerView: UISCrollView = {
	let sv = UIScrollView()
	...
	return sv
}()

private let imageView: UIImageView = {
	let iv = UIImageView()
	...
	return iv
}()

containerView.addSubView(imageView)
NSLayoutConstraint.activate([
	...
])

❌ imageView 오토레이아웃이 제대로 설정되지 않는다.
private let scrollView: UISCrollView = {
	let sv = UIScrollView()
	...
	return sv
}()

private let containerView: UIView = {
	let v = UIView()
	...
	return v
}()

private let imageView: UIImageView = {
	let iv = UIImageView()
	...
	return iv
}()

scrollView.addSubView(containerView)
NSLayoutConstraint.activate([
	...
])

containerView.addSubView(imageView)
NSLayoutConstraint.activate([
	...
])

🟢 ScrollView 안에 컨테이너뷰인 UIView를 넣어줌으로써 오토레이아웃이 잘 잡힌다

사용자 위치 정보를 제공받아서 뷰를 구성


LocationManager

NotificationCenter.default.**post**(name: Notification.Name("locationAuthorizationChanged"),
                                object: locationManager.authorizationStatus)
// 사용자 위치 권한 상태가 바뀔 때의 NotificationCenter
NotificationCenter.default.**addObserver**(self, 
																			 selector: (handleLocationAuthorizationChange(_:)), 
									  									 name: Notification.Name("locationAuthorizationChanged"),
																			 object: nil)

@objc func handleLocationAuhtorizationChange(_ notification: Notification) {
	if let status = notification.object as? CLAuthorizationStatus {
		status : 사용자 위치 권한 상태가 바뀔 때마다 실행될 로직
	}
}
// 사용자 위치 권한 상태
let status = LocationManager.shared.locationManager.authorizationStatus

switch status {
case .denied, .restricted:
	설정앱 이동 버튼 페이지
case .authorizedAlways, .authorizedWhenInUse:
	뷰 구성
}