1 min read

[iOS] Swift를 사용하여 iOS 이미지 사이즈 조절하기

iOS 개발을 진행하면서 이미지 사이즈를 줄여야할 때
[iOS] Swift를 사용하여 iOS 이미지 사이즈 조절하기
Photo by Richard Horvath / Unsplash

문제 인식

CheckBox를 제작하면서 이미지를 UIButton에 넣었다. 실제 실행해서 작업물을 보면 이미지 크기가 생각보다 컸기 때문에 직접 이미지 사이즈를 줄이기로 하였다. 하지만 Android처럼 간단하게 함수로 제공되지 않아서 개발자가 상황에 맞게 직접 작성해야 한다.

해결방법

 self.setImage(self.resizeImage(image: self.checkedImage, width: 16, height: 16), for: UIControlState.normal)

현재 찾은 방법으로 두가지 방법이 있는데 다음과 같다.

// 이미지 사이즈 조절
func resizeImage(image: UIImage, width: CGFloat, height: CGFloat) -> UIImage {
    UIGraphicsBeginImageContext(CGSize(width: width, height: height))
    image.draw(in: CGRect(x: 0, y: 0, width: width, height: height))
    let newImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    return newImage!
}

세로비율에 맞게 가로 조정

height 사이즈에 맞춰서 width 사이즈를 조절하는 메소드

// 이미지 사이즈 조절
func resizeImage(image : UIImage, width : Float, height : Float) -> UIImage? {
    let cgWidth = CGFloat(width)
    let cgHeight = CGFloat(height)

    // Begine Context
    UIGraphicsBeginImageContext(CGSize(width: cgWidth, height: cgHeight))
    // Get Current Context
    let context = UIGraphicsGetCurrentContext()
    context?.translateBy(x : 0.0, y : cgHeight)
    context?.scaleBy(x: 1.0, y: -1.0)
    context?.draw(image.cgImage!, in: CGRect(x: 0.0, y: 0.0, width: cgWidth, height: cgHeight))
    let scaledImage : UIImage? = UIGraphicsGetImageFromCurrentImageContext()
    // End Context
    UIGraphicsEndImageContext()

    if (scaledImage != nil) {
        return scaledImage
    }
    else {
        return nil
    }
}

결과

  • 자주 사용할 것 같아서 어디다가 복사해두고 쓰고있다.

참고