Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Swift中以编程方式调整UIImageView的大小?_Swift_Uiimageview_Resize_Ios9_Xcode7 - Fatal编程技术网

如何在Swift中以编程方式调整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

我正在尝试根据设备屏幕大小以编程方式调整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
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进行任何更改。使用该代码可以渲染低质量图像。这两种方法都可以渲染低质量图像。