본문 바로가기

UIKit6

UICollectionViewHeader with Dynamic Height 0. Plan Dynamic Height를 구현하기 위해서 AutoLayout Constraints 제약조건으로 SubView들의 높이의 합을 구해야한다. 이를 systemLayoutSizeFitting 메서드를 통해 계산할 수 있다. 1. Apple Document + blog systemLayoutSizeFitting(_:withHorizontalFittingPriority:verticalFittingPriority:) constraints와 지정된 우선순위를 기반으로 뷰의 최적 사이즈를 반환한다. func systemLayoutSizeFitting( _ targetSize: CGSize, withHorizontalFittingPriority horizontalFittingPriority: UILay.. 2023. 9. 25.
UIImageView를 Image 크기에 맞추기 [Swift] 문제점: UIImageView에서 scaleToFit 설정을 준 후, constraint를 통해 width가 화면 뷰에 맞도록 고정시켰다. 하지만 UIImagView의 크기가 줄어들지 않아 남는 여백이 생겨 UIImageView를 Image 크기에 맞게 AutoLayout을 설정하려 한다. 해결법: 1. Image의 비율을 저장한다. 2. AutoLayout의 height 설정에서 저장한 비율을 이용해 UIImageView의 width값으로 height값을 구해 AutoLayout을 설정한다. private let postImageView: UIImageView = { let iv = UIImageView() iv.contentMode = .scaleAspectFit iv.layer.borderWidth.. 2023. 8. 26.
cell의 이벤트 에러 [Swift] 이 글은 뇌피셜을 기반으로 합니다. cell에게 이벤트 주는 요소를 두 가지정도로 나누면 UIControl의 서브클래스, UIControl을 상속하지 않는 UIView 로 나눌 수 있을 것 같습니다. 나누는 기준에 대해 말씀드리면 UIControl의 서브클래스들은 cell에 넣었을 때 클릭이 잘 되는 설정이 따로 되어있는건지는 모르겠지만, cell 자체에 넣어도 지금 말하려는 문제가 생기지 않습니다. 문제는 후자인데, cell에 contentView 라는 서브뷰가 있습니다. 그리고 이 서브뷰는 isUserInteractionEnabled가 true로 설정되어있어요. 또한 후자의 뷰에게 이벤트를 주려면 let iv = UIView() let tap = UITapGestureRecognizer(target:.. 2023. 8. 21.
addGestureRecognizer와 addTarget 차이 [Swift] 버튼이나, view에게 클릭했을 때 이벤트를 발생하도록 하는 방법이 두 가지정도 되는것같다. UIView를 생성해서 UITapGestureRecognizer를 이용하거나, let iv = UIView() let tap = UITapGestureRecognizer(target: self, action: #selector(handleProfileImageView)) iv.isUserInteractionEnabled = true iv.addGestureRecognizer(tap) addTarget 함수를 이용하는 방법이다. let button = UIButton() button.addTarget(self, action: #selector(tapFollowButton), for: .touchUpInside) 첫.. 2023. 8. 21.