이미지보기의 너비가 있지만 가로 세로 비율을 유지하도록 이미지의 크기를 조정해야합니다. 그런 다음 이미지보기의 콘텐츠 모드를 .top
으로 설정하고 범위로 클리핑을 사용 설정합니다.
resizeImage
기능은 this answer의 수정 된 버전입니다.
func setImageView() {
imageView.contentMode = .top
imageView.clipsToBounds = true
let image = UIImage(named: "portrait")
imageView.image = resizeImage(image, newWidth: imageView.frame.width)
}
func resizeImage(_ image: UIImage?, newWidth: CGFloat) -> UIImage? {
guard let image = image else {
return nil
}
let scale = newWidth/image.size.width
let newHeight = image.size.height * scale
let newSize = CGSize(width: newWidth, height: newHeight)
UIGraphicsBeginImageContext(newSize)
image.draw(in: CGRect(origin: .zero, size: newSize))
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage
}
가 '병합'을 정의합니다. –
ImageView에서 콘텐츠 모드를 모두 사용하고 싶습니다. 가능한가? –
@ V-Dev. u 이미지의 상단 또는 가운데 부분 만 채우기를 원합니다. –