2017-02-11 11 views
0

Как создать изображение для всех размеров экрана, таких как iphone 5 до 6 \ 6+ (то же, что и 7 \ 7+)?Как создать изображение в качестве фонового изображения для всех размеров экрана

вот путаница, я могу создать один или создать FEW базовые изображения?

Я читал о @ 1x, @ 2x, @ 3x. Но я все еще смущен.

     iphone4 iphone5  iphone6  phone6+ 

Canvas Size(pts) 320x460 320x568  375x667  414x736 
Screen Size(Px)  640x960 640 x1136  750x1334  1080x1920 

здесь подходы, которые я буду использовать, помогите мне исправить их.

Это то, что я сделаю на основе размера экрана каждого iphone.

подход (А):

1.0) создать только один базовый размер изображения 320x568 (базы на Iphone 5)

1.1) Название это изображение: myimage320x568.png, [email protected], myimage320x568 @ 3x.png

- правильный путь? Будет ли система правильно масштабировать изображение для iphone5/6/6 +?

подход (B)

  1. Создать образ 320x568 для iPhone5 имя его. myimage320x568.png

  2. создать образ 375x667 для iphone6 ​​

    имя его myimage375x667.png, сделайте копию и назовите его [email protected]

  3. создать образ 414x736 для iphone6 ​​+

    имя его myimage414x736.png, myimage414x736 @ 3x.png

    4) использовать код для обнаружения iPhone модели или screen.height

    if (iphone5){ 
    
        use myimage320x568.png 
    
    } else if (iphone 6 or 7) { 
    
        use myimage375x667.png 
    
    } else if (iphone 6+ or 7+) { 
    
        use myImage414x736.png 
    
    } 
    

Это все верно?

// - Обновление

Это работает. Но я не уверен, какой базовый размер изображения должен использовать?

использовать этот 375x667 (iphone6) или этот размер 414x736 (iphone 6+) в качестве базового изображения

UIGraphicsBeginImageContext(self.view.frame.size) 

let img = UIImage(named: "iosWPMain1") 

img?.draw(in: self.view.bounds, blendMode: .normal, alpha: 1) 

let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()! 

UIGraphicsEndImageContext() 


self.view.backgroundColor = UIColor(patternImage: image) 

Благодаря

+0

Привет, Я считаю, что вы не делаете это изображение с помощью CoreGraphics. Можете ли вы прояснить ?. Если вы не делаете это изображение внутри приложения, пожалуйста, проверьте мой ответ и дайте мне знать, если у вас есть какие-то сомнения :). – KrishnaCA

ответ

0

Вы не можете создать изображение для всех размеров экрана, если вы хотите использовать он охватывает весь экран и не обрезает и не искажает. Поэтому вы должны использовать подход B.

0

Если вы добавляете внешнее изображение, то я предлагаю вам использовать ImageAssets.xcassets. Добавьте свои изображения туда. Таким образом, когда вы вызываете UIImage, используя UIImage(named: "image"). Таким образом, когда вы отпустите приложение в AppStore, iOS загрузит только изображения, необходимые для конкретного устройства.

Кроме того, вы можете получить масштаб-фактор устройства, используя следующий код

let scale: CGFloat = UIScreen.main.scale 

Таким образом, вы можете изменить логику в этом:

let scaleFactor: CGFloat = UIScreen.main.scale 

if scaleFactor == 1.0 { 
    // use 1x image 
}else if scaleFactor == 2.0 { 
    // use 2x image 
}else if scaleFactor == 3.0 { 
    // use 3x image 
} 

Но, это лучше используйте ImageAssets.xcassets, чем это. Следуя этому подходу, размер вашего приложения будет увеличиваться.

+0

1.0 для не-сетчатки (iphone4), 2.0 для сетчатки (iphone 5,5s, 6,6s), 3,0 для сетчатки iphone 6+, 7+. Если это так, я использую подход Ashley (выше) с UIGraphic to нарисуйте основу вашего подхода к обнаружению: создайте большую базу изображений на iphone6 ​​+ размер точки и нарисуйте базу на view.frame.size и назначьте изображение view.background = UIColor (patternImage: image), это нормально? – MilkBottle

+0

Итак, вы рисуете изображение с помощью CoreGraphics. Тогда вам не нужно все это учитывать. Перед началом контекста, используя это, 'UIGraphicsBeginImageContextWithOptions (CGSize (width: 100, height: 100), false, UIScreen.main.scale)', вы можете просто установить масштаб – KrishnaCA

+0

Я обновляю свой код выше. Я не понимаю, зачем использовать w: 100, H: 100. – MilkBottle

0

Самый простой подход заключается в создании единого образа на самом большом размере, а затем установить ваши UIImageView «ы contentMode к .aspectFill