Как предотвратить изменение размера UIToolbar, когда UIImageView отображает изображение? - PullRequest
0 голосов
/ 12 октября 2018

Я создаю приложение, которое позволяет пользователю создавать мемы ( Проект Udacity: Meme Me ).

Интерфейс состоит из двух UIToolbar s (вверху и внизу) иUIImageView, который охватывает пространство между ними.Остальные элементы пользовательского интерфейса не имеют отношения к моей проблеме.Вот скриншот приложения, когда оно запускается впервые:

Meme Me app upon launching

Когда изображение загружается в UIImageView, обе панели инструментов изменяются в размере и уменьшаютсяпо высоте, как показано здесь:

Meme Me app after displaying an image

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

1 Ответ

0 голосов
/ 12 октября 2018

Размер ваших панелей инструментов может быть изменен, потому что, если вы не укажете ограничения для своих элементов пользовательского интерфейса (таких как панели инструментов и UIImageView s), XCode интерпретирует его по-своему и покажет вам, что он считает лучшим макетом.Мы обычно обходим эту проблему, явно устанавливая следующее свойство каждого элемента пользовательского интерфейса в false:

MyUIElement.translatesAutoresizingMaskIntoConstraints = false

и затем программно определяем ограничения элемента.Обратите внимание, что MYUIElement это то, что вы назвали своим UIElement.Это говорит XCode, что вы, как программист, хотите получить полный контроль над позиционированием элемента пользовательского интерфейса в его представлении.

Вы можете запретить изменение размера панели инструментов, установив для нее ограничение программно:

topToolbar.heightAnchor.constraint(equalToConstant: 50.0).isActive = true
bottomToolbar.heightAnchor.constraint(equalToConstant: 50.0).isActive = true

Конечно, вы бы заменили topToolbar и bottomToolbar на то, что вы называли, называя ваши панели инструментов, и 50.0 на любое значение, подходящее для вашего варианта использования.

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

Однако концепция программного пользовательского интерфейса, вероятно, не рассматривается в курсе разработки iOS для начинающих, и вы наиболеескорее всего, построение этого с использованием раскадровки, которая объясняет, почему ваши панели инструментов выходят из-под контроля!

Если вы создали их с помощью Interface Builder (т.е. в вашей раскадровке), то вы можете либо изменить ограничение высоты, используякод выше или поигравшись с настройками макета в Интерфейсном Разработчике, нажав кнопку ниже:

enter image description here

Если вы решили установить свое ограничение черезкак указано выше, обратите внимание, что XCode может сказать , что вам нужно указать еще больше ограничений (например, ограничение ширины), чтобы компилятор не считал положение вашей панели инструментов «неоднозначным».

...