2016-04-02 5 views
1

Я знаю, этот вопрос, кажется, старая школа одна, но я не могу найти хороший ответ на это, есть вещь:Как установить различные размеры экрана в ИО

Логические разрешения экрана для iPhone5, iPhone6 ​​и iPhone6 ​​+:

iPhone5 320 x 568 
iPhone6 375 x 667 
iPhone6+ 414 x 736 

Предположим, что у меня есть квадратный элемент пользовательского интерфейса в центре экрана, и есть три способа, чтобы ограничить его ширину (& высота) над различными устройствами:

  1. width постоянен
  2. width/screen.width постоянен
  3. screen.width - width постоянен

эти три различных способа сдерживающий результат в трех различных выступлений:

Picture 1: 3 different appearances

Я думаю, что 2-й способ сдерживающий (т.е. средний столбец в Picture 1) является наиболее естественным с точки зрения дизайнера, но он наименее естественен с точки зрения программиста. Мне нужно проверить тип устройства и рассчитать размеры и использовать разные изображения для разных устройств (автоматическое отключение не может помочь в этом обстоятельстве)

1-й способ кажется очень естественным для реализации, но он отстой на практике, особенно при работе с текстовым шрифтом размеры.

3-й должен также определить, какое изображение использовать программно, потому что три элемента интерфейса в трех разных устройствах не соответствуют простым масштабным коэффициентам @x2@x3.

Есть ли какая-нибудь работа, чтобы легко реализовать второй способ ограничения?

+0

элемент пользовательского интерфейса необходим надлежащие минусы traints - не печатать никакие значения экрана. '1)' Добавить горизонтальные и вертикальные ограничения центра (это будет держать его в центре). '2)' Добавьте ограничение width = height к квадрату (это сделает его квадратом). '3)' Добавьте ширину = пропорцию ограничения супервизора к квадрату (это даст ему ширину и высоту на основе размера экрана без каких-либо жестко заданных значений экрана и будет работать для всех устройств). –

ответ

0

Если вы используете раскадровку, вы можете легко рассчитать второй способ, который вы хотите. Вы можете дать пропорциональную ширину с надписью. Как вы можете видеть в image , вы можете дать множителю свои взгляды. Или вы можете создать ограничение ширины в коде, такие как:

@IBOutlet weak var widthConstraint: NSLayoutConstraint! 

и вы можете обновить ограничение в вашем коде.

+0

Спасибо за быстрый ответ. Раскадровка не помогает при выборе изображения, предположим, что 'multiplier = 0,5', тогда мне нужно изображение 160x160px для изображения iphone5 и' 187.5x187.5px' для iphone6 ​​ –

+0

Когда вы добавляете изображение с размерами '@x ',' @ 2x' и '@ 3x' вам не нужно добавлять другой размер этого изображения. – ridvankucuk

+0

И что я могу сделать для размера шрифта? –

1

Вы можете просто указать горизонтально в контейнере и вертикально в ограничениях контейнера, чтобы посмотреть, что находится в центре, если ViewController и если необходимо, то дайте высоту и ширину самого вида.

0

Используйте макросы

#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)

#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)

#define IS_RETINA ([[UIScreen В начало ] scale]> = 2.0)

#define SCREEN_WIDTH ([[UIScreen mainScreen] bounds] .size.ширина)

#define SCREEN_HEIGHT ([[UIScreen В начало] оценки] .size.height)

#define SCREEN_MAX_LENGTH (МАКС (SCREEN_WIDTH, SCREEN_HEIGHT))

#define SCREEN_MIN_LENGTH (МИН (SCREEN_WIDTH, SCREEN_HEIGHT))

#define IS_IPHONE_4_OR_LESS (IS_IPHONE & & SCREEN_MAX_LENGTH < 568,0)

#define IS_IPHONE_5 (IS_IPHONE & & SCREEN_MAX_LENGTH == 568,0)

#define IS_IPHONE_6 (IS_IPHONE & & SCREEN_MAX_LENGTH == 667,0)

#define IS_IPHONE_6P (IS_IPHONE & & SCREEN_MAX_LENGTH == 736,0)

, если (IS_PHONE_5) {// TODO}

, если (IS_PHONE_6) {// TODO}