문제점:

UIImageView에서 scaleToFit 설정을 준 후, constraint를 통해 width가 화면 뷰에 맞도록 고정시켰지만,

UIImageView의 높이가 UIImageView에 저장된 UIImage에 맞게 줄어들지 않아 남는 여백이 생깁니다.

 

해결법:

 

여백을 없애는 기능 자체는 아직 없는 것으로 보입니다.

직접 사진의 비율을 계산해서 width를 원하는 값으로 고정시켜, 도출된 height 값으로 높이를 설정해야 합니다.

(물론 height를 고정시키고, width를 도출시킬 수 도 있습니다.)

다시 말하면,

 

(1) UIImage의 비율을 구해서

(2) 구한 비율값을 바탕으로 설정할 height를 도출하고

(3) AutoLayout height constraint에 넣는 방식으로 해결할 수 있습니다.

 

 

(1) image의 비율을 저장. ( 비율 = 가로 ÷ 세로 ) (반대로 나눠도 되고..)

UIImageView의 저장된 image(UIImageView에 저장될 image)의 비율을 ratio 변수에 저장합니다.

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

 

(2) UIImageView의 width와 비율로 height 도출

UIImageView를 넣는 상황을 다시 생각해 보면,

우리가 원하는 width값을 저장하면 그에 맞게 height값이 원본 이미지 크기에 맞게 설정되도록 하려는 겁니다.

그래서, 우리는 width와 ratio를 알고 있습니다.

저는 width를 100으로 설정하겠습니다.

 

imageView.snp.makeConstraints { make in
    make.width.equalTo(100)
}

 

ratio = width / height 이므로

-> height = width / ratio 가 되겠죠.

 

공식 그대로 제약조건에 추가해 줍니다.

 

imageView.snp.makeConstraints { make in
    make.height.equalTo(imageView.snp.width).dividedBy(ratio)
}

 

해결!

+ Recent posts