AutoLayout+SnapKit로 고정된 뷰보다 넓은 뷰 만들기

3617 단어 SwiftSnapiOS
최근 iOS의 View는 InterfaceBuilder를 사용하지 않고 코드로 생성되었습니다.
그때는 SnapKit이라는 OSS를 이용했지만, 종횡비로 고정된 뷰를 만드는 방법에 대해 조금 고민이 돼서 Tips로 미리 남겨뒀다.

InterfaceBuilder의 경우


Add New Constraints에서 Aspect Ratio를 검사하면 됩니다.

SnapKit의 경우


가로/세로 고정
aView.snp.makeConstraints { make in
    let width = 100
    let ratio = 0.5
    make.width.equalTo(width)
    make.height.equalTo(aView.snp.width).multipliedBy(ratio)
}
응, 이렇게 뷰를 고정시키는 사람(이번은 가로폭)은 평소와 같이 설정하고, 의존하는 사람(이번은 세로폭)에게 equal To로 고정시키는 사람이 똑같다고 선언한 다음에 멀티플렉스 By로 이 비율을 넣으면 된다.

이미지에 ImageView Fit


이 아이디어를 사용하면 이미지 배율을 유지하면서 AutoLayout의 이미지 종횡비를 유지하는 좋은 느낌으로 ImageView를 설정할 수 있습니다.
이미지에 ImageView Fit
imageView.snp.makeConstraints { make in
    let ratio: CGFloat = {
        let size = imageView.image!.size
        return size.height / size.width
    }()
    make.width.equalToSuperview().multipliedBy(0.8)
    make.height.equalTo(imageView.snp.width).multipliedBy(ratio)
}
이렇게 하면 ImageView의 가로 폭을 모 뷰의 0.8배로 설정하고 ImageView Fit을 이미지의 너비로 설정할 수 있습니다.

좋은 웹페이지 즐겨찾기