UIImage를 축소율에 따라 크기 조정
overview
(소 재료입니다)
UIImageView가 아니라 UIImage의 단계에서 리사이즈하고 싶은 상황, 드물게 있거나 한다.
그러한 때는, 이하와 같은 Extension으로 대응할 수 있다.
detail
UIImage+Resize.swiftimport UIKit
protocol ImageResizing {
func resize(with ratioType: UIImage.ResizeRatioType) -> UIImage!
}
extension UIImage: ImageResizing {
enum ResizeRatioType {
case naviIconSize
case tabIconSize
var ratio: CGFloat {
switch self {
case .naviIconSize:
return 0.9
case .tabIconSize:
return 0.75
}
}
}
func resize(with ratioType: UIImage.ResizeRatioType) -> UIImage! {
return resize(
with: CGSize(
width: size.width * ratioType.ratio,
height: size.height * ratioType.ratio
)
)
}
// MARK: - private
private func resize(with newSize: CGSize) -> UIImage! {
UIGraphicsBeginImageContextWithOptions(newSize, false, 0.0)
draw(in: CGRect(x: 0, y: 0, width: newSize.width, height: newSize.height))
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage
}
}
주의점
스케일
The scale factor to apply to the bitmap. If you specify a value of 0.0, the scale factor is set to the scale factor of the device’s main screen.
UIGraphicsBeginImageContextWithOptions(::_:) - Apple Developer
위와 같이 Asset Catalog 등을 이용하고 있다면 UIGraphicsBeginImageContextWithOptions
의 제 3 인수 scale
에 0.0 을 건네준다.
(이것은 항상 사용 장치의 메인 스크린 스케일을 적용합니다)
usage
보통:
let image = UIImage(named: "star")?.resize(with: .naviIconSize)
Asset catalog에서 직접 호출하는 경우 :
SwiftGen 의 경우:
let image = Asset.MaterialIcon.icClose36pt.image.resize(with: .naviIconSize)
덤
사용법은?
UIImage+Resize.swift
import UIKit
protocol ImageResizing {
func resize(with ratioType: UIImage.ResizeRatioType) -> UIImage!
}
extension UIImage: ImageResizing {
enum ResizeRatioType {
case naviIconSize
case tabIconSize
var ratio: CGFloat {
switch self {
case .naviIconSize:
return 0.9
case .tabIconSize:
return 0.75
}
}
}
func resize(with ratioType: UIImage.ResizeRatioType) -> UIImage! {
return resize(
with: CGSize(
width: size.width * ratioType.ratio,
height: size.height * ratioType.ratio
)
)
}
// MARK: - private
private func resize(with newSize: CGSize) -> UIImage! {
UIGraphicsBeginImageContextWithOptions(newSize, false, 0.0)
draw(in: CGRect(x: 0, y: 0, width: newSize.width, height: newSize.height))
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage
}
}
주의점
스케일
The scale factor to apply to the bitmap. If you specify a value of 0.0, the scale factor is set to the scale factor of the device’s main screen.
UIGraphicsBeginImageContextWithOptions(::_:) - Apple Developer
위와 같이 Asset Catalog 등을 이용하고 있다면
UIGraphicsBeginImageContextWithOptions
의 제 3 인수 scale
에 0.0 을 건네준다.(이것은 항상 사용 장치의 메인 스크린 스케일을 적용합니다)
usage
보통:
let image = UIImage(named: "star")?.resize(with: .naviIconSize)
Asset catalog에서 직접 호출하는 경우 :
SwiftGen 의 경우:
let image = Asset.MaterialIcon.icClose36pt.image.resize(with: .naviIconSize)
덤
사용법은?
let image = UIImage(named: "star")?.resize(with: .naviIconSize)
let image = Asset.MaterialIcon.icClose36pt.image.resize(with: .naviIconSize)
사용법은?
이런 것 원래 데이터에 손을 넣지 않고 크기를 조정하고 싶을 때
UIBarButtonItem
등 직접 UIImageView를 만지기 어려울 때 어쨌든, 슛과 사용하면 길 Reference
이 문제에 관하여(UIImage를 축소율에 따라 크기 조정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kz56cd/items/02c39fd9bcb2163ff589텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)