如何在Swift中以编程方式调整UIImageView的大小?
我正在尝试根据设备屏幕大小以编程方式调整UIImageView的大小,但无法使其正常工作。没有什么变化 这是我的代码:如何在Swift中以编程方式调整UIImageView的大小?,swift,uiimageview,resize,ios9,xcode7,Swift,Uiimageview,Resize,Ios9,Xcode7,我正在尝试根据设备屏幕大小以编程方式调整UIImageView的大小,但无法使其正常工作。没有什么变化 这是我的代码: let screenSize: CGRect = UIScreen.mainScreen().bounds print(screenSize.height) imgLogo.image = AppKit.appLogo switch screenSize.height { case 736.0: print("iPh
let screenSize: CGRect = UIScreen.mainScreen().bounds
print(screenSize.height)
imgLogo.image = AppKit.appLogo
switch screenSize.height {
case 736.0:
print("iPhone 6 Plus")
imgLogo.frame = CGRectMake(0,0, 80 ,80)
case 667.0:
print("iPhone 6")
imgLogo.frame = CGRectMake(0,0, 60, 60)
case 568.0:
print("iPhone 5S")
imgLogo.frame = CGRectMake(0,0, 50, 50)
case 480.0:
print("iPhone 4S")
imgLogo.frame = CGRectMake(0,0, 40, 40)
default: break
Interface Builder中的视图模式设置为“Aspect Fit”。我还使用自动布局,对UIImageView的宽度和高度没有任何限制
这段代码有什么问题?将浮点值与switch语句进行比较是不可靠的。 试着根据手机型号来识别它
我通过创建此帮助器方法解决了此问题:
func resizedImage (widthScale: CGFloat, heightScale: CGFloat) -> UIImage {
let img = AppKit.appLogo
let size = CGSizeApplyAffineTransform(img.size, CGAffineTransformMakeScale(widthScale, heightScale))
let hasAlpha = true
let scale: CGFloat = 0.0 // Automatically use scale factor of main screen
UIGraphicsBeginImageContextWithOptions(size, !hasAlpha, scale)
img.drawInRect(CGRect(origin: CGPointZero, size: size))
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage
}
用途是:
imgLogo.image = resizedImage(0.3, heightScale: 0.3)
我看不出这有什么意义,因为当我执行代码并在模拟器之间切换时,它会打印正确的设备。问题不在于识别设备型号,而是现在对UIImageView进行任何更改。使用该代码可以渲染低质量图像。这两种方法都可以渲染低质量图像。