如何在Swift中以编程方式调整UIImageView的大小



我正试图根据设备屏幕大小以编程方式调整UIImageView的大小,但我无法使其工作。没有什么变化。

这是我的代码:

    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

界面生成器中的视图模式设置为"Aspect Fit"。我还使用了自动布局,对UIImageView的宽度和高度没有限制。

这个代码有什么问题?

我通过创建以下辅助方法解决了这个问题:

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)

像switch语句那样将float与进行比较是不可靠的。尝试通过型号识别手机

有关

的详细信息,请参阅此

最新更新