Xcode Interface Builder - сделайте составную карту совместимой с несколькими экранами - PullRequest
0 голосов
/ 13 мая 2019

Получил карту, которая состоит из нескольких частей:

enter image description here

Каждая часть представляет собой UIButton с изображением. Я расположил все, чтобы составить карту, и сначала она выглядит хорошо. У меня проблема с изменением размера View для экранов разных размеров. Пробовал с Авторазмером и Ограничениями, но не мог заставить это выглядеть должным образом для минимизации и максимизации этого. Детали должны всегда болеть вместе и увеличиваться / уменьшаться в зависимости от размера экрана. Я тестирую поведение непосредственно в Интерфейсном Разработчике, изменяя размеры XIB.

Что работает, так это установка всех стрелок в autoresizingMask для каждого UIButton и максимизация вида. Но сведение к минимуму искажает карту.

К сожалению, я впервые работаю с Интерфейсным Разработчиком в XCode. Здесь вы найдете исходные файлы . Спасибо!

Edit: Установка только стрелок для ширины и высоты в autoresizingMask позволяет уменьшить масштаб без искажений. Ускорение разделяет детали. Как поддерживать правильное увеличение / уменьшение одновременно?

Edit1: Заменены все UIButton на UIImage, которые правильно меняются в Интерфейсном Разработчике! Смотрите репо здесь . К сожалению, на устройствах simualtor автоматическое изменение размера отличается, и части карты больше не слипаются. Устанавливая размер UIView в Main.storyboard точно в размер xib, Autoresizing работает отлично (протестировано на нескольких устройствах). Но позже в «реальном» проекте я не контролирую размеры представления родителя. Воспроизведен небольшой бит с этой строкой кода , и, похоже, он отвечает за "блокирование" авторазмера Как этого избежать? Заранее спасибо. Я думаю, что, возможно, я смешиваю Авторазмер с AspectFit, который, кажется, не имеет никакого эффекта.

1 Ответ

0 голосов
/ 13 мая 2019

Полагаю, было бы гораздо проще, если бы все изображения Бундесленда имели одинаковый размер. Поместите их друг на друга в общем виде. Дайте всем кнопкам заполнение нулями со всех сторон. Подкласс UIButton, чтобы проверить, происходит ли событие касания на непрозрачном пикселе. Ищите «неправильную кнопку IOS», чтобы узнать больше об этом.


Я могу добиться этого, используя эти изображения одинакового размера, с добавленной рамкой для демонстрации размера

NDS NRW Hessen Sachsen-Anhalt

и это ограничения

the constraints iPhone the constraints iPad

Наиболее важным ограничением может быть ограничение соотношения сторон в MapWrapper, представление, содержащее все кнопки.


Использование кнопки Ole Begemann OBShaped OBShapedButton


Некоторые заметки:

  • Ваше изображение идеально подходит для факторизованной графики. Экспортируйте их в pdf и добавьте их как единое целое в свои активы
  • Вы не должны включать названия состояний «в изображениях, а использовать их в качестве заголовков кнопок». Чтобы правильно расположить их, используйте титульные вставки.

пример проекта: https://github.com/vikingosegundo/germanStateSelection

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...