블로그

UIImageView를 Image 크기에 맞추기 [Swift]

게시 2분

문제점:

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 = 1 iv.image = #imageLiteral(resourceName: "venom-7") return iv }()
addSubview(postImageView) postImageView.snp.makeConstraints { make in make.top.equalTo(usernameButton.snp.bottom).offset(8) make.leading.equalTo(self).offset(8) make.trailing.equalTo(self).offset(-8) }

위 스크릿샷의 설정이다.

leading과 trailing설정에서 뷰로부터 8씩 떨어지게해서 width값을 고정시켰다.

이제 UIImageView의 저장된 image의 비율을 ratio 변수에 저장하고,

let ratio: CGFloat = image.size.width / image.size.height

현재 UIImageView의 width에 대해 저장된 비율로 height를 고정시키면 된다.

postImageView.snp.makeConstraints { make in make.height.equalTo(self.postImageView.snp.width).multipliedBy(1/ratio) }

해결!!

해결!!

댓글

댓글을 남기면 닉네임(또는 GitHub 계정 정보)이 저장됩니다. 개인정보처리방침

GitHub