[IOS] UIButton 안에 이미지의 비율을 유지하는 방법
UIButton 안에 이미지의 비율을 유지하는 방법은 다음과 같습니다:
- Aspect Fit 설정: UIButton의 이미지를 비율을 유지하면서 버튼의 크기에 맞추려면 UIButton의 contentMode 속성을 .scaleAspectFit으로 설정합니다. 이렇게 하면 이미지가 버튼 내부에 꽉 차면서도 비율이 유지됩니다.
button.imageView?.contentMode = .scaleAspectFit
- 이미지 크기 조정: 이미지를 버튼의 크기에 맞게 조정하여 비율을 유지할 수도 있습니다. 이 경우에는 이미지를 버튼의 크기에 맞게 스케일링한 후 설정해야 합니다.
let buttonWidth = button.frame.width
let buttonHeight = button.frame.height
let image = UIImage(named: "yourImageName")
let scaledImage = image?.scaledToFit(in: CGSize(width: buttonWidth, height: buttonHeight))
button.setImage(scaledImage, for: .normal)
위의 코드에서 scaledToFit(in:)
메서드는 이미지를 지정된 크기에 맞게 스케일링하는 역할을 합니다. 이 메서드는 아래에 구현된 extension을 사용합니다.
extension UIImage {
func scaledToFit(in size: CGSize) -> UIImage? {
let aspectRatio = self.size.width / self.size.height
var newSize = size
if aspectRatio > 1 {
newSize.height = newSize.width / aspectRatio
} else {
newSize.width = newSize.height * aspectRatio
}
UIGraphicsBeginImageContextWithOptions(newSize, false, 0.0)
self.draw(in: CGRect(origin: .zero, size: newSize))
let scaledImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return scaledImage
}
}
위의 방법을 사용하면 UIButton 안에 이미지를 비율을 유지하면서 적절하게 표시할 수 있습니다.