Приложение IOS автоматически изменяет размер содержимого в соответствии с размером экрана.

Я собираюсь реализовать дизайн приложения ios. Дизайн выполнен с учетом размера экрана iPhone 5 (640 x 1136 пикселей).

Я хочу автоматически изменить размер всего содержимого в соответствии с размером экрана дисплея, на котором он будет работать, включая: размер шрифта, размер растрового изображения, размер подвида.

В идеале я хочу кодировать только один раз, предполагая, что ширина устройства составляет 320 точек, независимо от фактической ширины устройства. У iPhone 6 и 6s дисплеи больше, но соотношение сторон одинаковое.

Например, если я создаю поле UIView в своем контроллере представления:

UIView *box = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 10)];
box.backgroundColor = [UIColor redColor];
[self.view addSubView:box];

всегда будет рисовать красную рамку, охватывающую всю ширину экрана, независимо от размера экрана устройства (в iphone 6 и 6s). Я делаю большую часть визуального компонента и макета, используя код, подобный приведенному выше, в том числе для создания UILabel и т. д.

В основном он работает как функция «масштабирования дисплея» в iphone 6, 6plus, но только для этого приложения. (не глобально)

Какой трюк сделать, чтобы получить желаемый результат? Если возможно, я не хочу использовать autolayout.

Спасибо,


person night_coder    schedule 06.08.2016    source источник
comment
Вы можете рассчитать ширину и высоту экрана и соответствующим образом настроить представления или добавить ограничения в код, см. NSLayoutConstraint   -  person Ahmad Baracat    schedule 06.08.2016
comment
Вы говорите, что не хотите использовать autolayout, но серьезно, используйте autolayout.   -  person Paulw11    schedule 06.08.2016
comment
@Paulw11Paulw11 Я не хочу использовать автомакет, потому что мне нужно будет установить много ограничений. с другой стороны, мне нужно просто «растянуть» вид, чтобы он соответствовал размеру экрана устройства. Таким образом, мне нужно будет только установить x, y, ширину, высоту для всех подвидов в размере экрана iphone5, и он (надеюсь) будет растянут, чтобы заполнить весь экран для iphone 6 и 6+ (то же соотношение сторон).   -  person night_coder    schedule 06.08.2016
comment
Я думал использовать преобразование (CGAffineTransform) для их масштабирования, но это масштабирование растрового изображения, которое приведет к некоторому дефекту, если подпредставления растровых изображений / значков будут увеличены.   -  person night_coder    schedule 06.08.2016
comment
Вы можете использовать более старый подход к автоматическому изменению размера пружин и стоек, но автоматическая компоновка существует уже 5 лет и значительно упрощает работу со всеми различными размерами дисплея.   -  person Paulw11    schedule 06.08.2016


Ответы (1)


@night_coder, я не уверен в том, что ты пытаешься сказать, но, исходя из своего понимания, я отвечаю тебе.

Вы можете пойти на визуальные макеты (если вы пытаетесь программно)

or

вы можете использовать автоматическое изменение размера, отключив автоматические макеты и подвиды (если вы пытаетесь бросить раскадровку)

person Sandpie    schedule 06.08.2016