2016-04-14 3 views
0

Я пытаюсь изменить размер программного обеспечения UIImageView на основе размера экрана устройства, но я не могу заставить его работать. Ничего не меняется.Как изменить UIImageView программно в Swift?

Here's мой код:

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 установлен в "Аспект Fit". Я также использую Auto Layout без ограничений для ширины и высоты UIImageView.

В чем проблема с этим кодом?

+0

Используя этот код, оказывает низкое качество изображения. –

+0

Оба метода визуализируют изображения низкого качества. –

ответ

-1

Сравнение поплавков с оператором switch не является надежным. Попробуйте идентифицировать телефон с помощью своей модели

See this for details

+0

Я не вижу смысла в этом, так как, когда я выполняю код и меняю симуляторы, он печатает правильное устройство. Проблема заключается не в идентификации модели устройства, а в внесении изменений в UIImageView. –

0

Я решил проблему, создав этот вспомогательный метод:

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) 
Смежные вопросы