override func layoutSubviews()
override init(frame: CGRect)
override func layoutSubviews()
는 뷰가 이미 생성되어 화면에 표시되고, 뷰의 크기나 위치가 변경되었을 때 호출되며, override init(frame: CGRect)
는 뷰가 처음 생성될 때 호출된다.
extension PhotoCollectionViewCell: LayoutProtocol {
func setSubViews() {
addSubview(imageView)
}
func setLayout() {
imageView.snp.makeConstraints { $0.edges.equalToSuperview() }
imageView.contentMode = .scaleAspectFill
imageView.clipsToBounds = true
}
}
override func layoutSubviews()
함수는 뷰가 이미 생성되어 화면에 표시되고, 뷰의 크기나 위치가 변경되었을 때 호출된다.override func layoutSubviews()
내에서 호출하는 것은 뷰가 변경될 때 마다 매번 호출되는 것이므로 적합하지 않다.override init(frame: CGRect)
함수는 뷰가 생성될 때 한 번만 호출되므로, 이 함수 내에서 호출하는 것이 더 적합하다.따라서
override init(frame: CGRect) {
super.init(frame: frame)
setSubViews()
setLayout()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
이렇게 해주면 끝~