2015-04-27 2 views
1

В настоящее время я делаю приложение WatchKit, которое требует двух разных макетов, основанных на некоторых условиях. Поскольку эти два макета очень похожи (у одного только больше элементов, чем у другого), я решил использовать один и тот же интерфейс для обоих (и потому, что нет возможности программно определить, какой контроллер загружать при запуске).Размер элемента относительно размера экрана в Watchkit

Однако проблема возникает тогда, когда дело доходит до различных размеров экрана:

  1. В моей первой схеме я хочу три элемента, чтобы заполнить экран на обоих размеров. Для этого я использовал процентные значения для их размеров, которые всегда составляют до 100% (таким образом, нет прокрутки, необходимой на 38 мм и без пустого места на 42 мм). enter image description here

  2. Во второй компоновке на экране есть еще несколько элементов. Поэтому, когда я использую те же процентные значения для одних и тех же элементов, они растут, потому что общий размер контроллера интерфейса больше.
    enter image description here

Что вы, ребята, рекомендуем сделать, чтобы исправить эту проблему?

EDIT 1: Фотографии предназначены для представления того, что я хочу, чтобы оно выглядело. В настоящее время элементы (например, карта и кнопка) составляют 30 и 40% размера интерфейса контроллера в обоих случаях, что делает их огромными во втором макете. Я хочу, чтобы они сохраняли одинаковый фиксированный размер в обоих случаях. Однако использование фиксированного номера делает их слишком большими для 38 мм или слишком маленькими для 42 мм.

EDIT 2: Там, кажется, немного путаницы: При прокладке элементов на Apple, Watch, есть три варианта:

  1. размера, чтобы соответствовать содержанию элемент охватывает все элементы в.
  2. Относительно контейнера Вы даете ему процентное значение контейнера.
  3. Исправлено: Вы придаете ему значение в очках.

Когда я использую второй вариант, относительный, я получаю идеальный выход как на 38 мм, так и на 42 мм в первой компоновке. Однако при добавлении большего количества элементов на экран во втором макете размер контейнера увеличивается, а также размер элементов. Когда я использую третий вариант, исправленный, я могу получить идеальный результат на любом из размеров. Элементы слишком большие для 38 мм, а прокрутка необходима даже в первой компоновке. Или элементы являются двумя маленькими для 42 мм, и есть масса открытого пространства.

Мне нужно решение, которое позволит элементам в первом макете заполнить экран (например, с помощью опции 2), но не увеличит размер элементов в макете два (например, с опцией 3). Невозможно изменить это программно в WatchKit, поэтому мне нужно придумать третье решение, которое сработает.

Любые предложения?

ответ

5

Не было бы проще спроектировать контроллер с абсолютными значениями размера для обоих размеров экрана?

, как размерные классы для IOS, InterfaceBuilder позволяет переключаться между размерами часов, нажав на + значок:

enter image description here

где вы можете выбрать размер часов:

enter image description here

Чтобы посмотреть, как выглядят разные макеты, вы можете изменить предварительный просмотр в нижней части окна InterfaceBuilder:

enter image description here

+0

Я не знал, что вы можете настроить пользовательские размеры для разных размеров часов, спасибо! – Aleksander

0

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

Лучшим советом, который может быть предложен, является использование опции, которая позволяет устанавливать размер отдельно для часов 38 мм и 42 мм.

+0

Я не знаю, знакомы ли вы с разработкой для Apple Watch, но все макеты должны выполняться в раскопках. Когда вы выбираете размер объектов, вы можете выбрать один из трех вариантов: 1. Размер для соответствия содержимому, 2. Относительно контейнера (в процентах) и 3. Фиксированный размер (в точках). Моя проблема в том, что при использовании 2. контейнер увеличивается из-за добавленных элементов, а затем этот объект (например, карта) увеличивается. При использовании 3., он может соответствовать только одному из двух размеров экрана, а не тем и другим. – Aleksander

+0

Модифицировано, чтобы дать лучший совет без дополнительной информации о том, как выглядит проблемный вывод. –

1

Для таких ситуаций, как это в моем собственном приложении Watch, я создал две отдельные группы, и я программно скрываю ту, которую я не хочу видеть. Таким образом, мой код может решить, какой из них использовать в любой заданной ситуации. Это не так хорошо, как возможность изменять размеры элементов, но кажется, что это лучшее, что мы можем сделать в данный момент.

+0

Итак, используя две карты в двух отдельных группах, по одному в каждом? – Aleksander

+0

Исправить. Затем просто скройте/отобразите группы контейнеров верхнего уровня. –

+0

Ahh, умный. Не очень «красивое» решение, но пока это работает, хорошо со мной, ха-ха. Благодаря! – Aleksander

Смежные вопросы