UIImageView исчезает при применении ограничения соотношения сторон - PullRequest
0 голосов
/ 30 июня 2018

Xcode 9.3, MacBook Pro под управлением ОС 10.13.4

Когда я добавляю ограничение соотношения сторон к UIView в IB, представление не отображается в симуляторе. Пытаясь выяснить, куда это пошло, я записал соответствующие координаты кадра с отсутствующим ограничением, а затем представил. Координаты выглядят одинаково, но см. Скриншоты для различия.

Без ограничений:

self.view.center = (207.0, 368.0)
self.thumbView.center = (93.0, 207.5)
self.viewFinder.center = (187.5, 163.5)
self.view.frame = (0.0, 0.0, 414.0, 736.0)
self.thumbView.frame = (30.0, 174.0, 126.0, 67.0)
self.viewFinder.frame = (16.0, 75.0, 343.0, 177.0)

Только с ограничениями соотношения сторон:

self.view.center = (207.0, 368.0)
self.thumbView.center = (93.0, 207.5)
self.viewFinder.center = (187.5, 163.5)
self.view.frame = (0.0, 0.0, 414.0, 736.0)
self.thumbView.frame = (30.0, 174.0, 126.0, 67.0)
self.viewFinder.frame = (16.0, 75.0, 343.0, 177.0)

Конечно, был бы признателен за помощь, если у вас есть идеи!

Вот снимок сцены в IB. Большой UIImageView равен viewFinder, маленький thumbView:

enter image description here

Вот как это выглядит без ограничений:

enter image description here

И вот как это выглядит после добавления ограничения соотношения сторон:

enter image description here

РЕДАКТИРОВАТЬ 1

В соответствии с комментарием @Anton ниже, я добавил ограничения приближения снизу и сбоку от viewFinder к thumbView. Однако это не произвело никаких изменений - я все еще получаю координаты, которые указывают на наличие thumbView, но оно остается невидимым.

1 Ответ

0 голосов
/ 30 июня 2018

Краткий ответ: попробуйте добавить также ограничения для позиции x и y к представлению большого пальца (например, выровняйте его края 'leading и bottom с viewFinder). Вы можете получить те же кадры только потому, что проверяете их перед тем, как autolayout выполняет свою работу (например, в viewDidLoad). Также установите некоторое изображение для этого изображения или установите ограничение для одного из измерений (без такого ограничения autolayout пытается использовать собственный размер, который зависит от содержимого для UIImageView). Кроме того, после этого вы должны проверить Интерфейсный Разработчик на наличие других ошибок, потому что он, скорее всего, потребует установки ограничений на представления, ваш thumbView зависит от

Если у вас действительно есть только одно ограничение для просмотра большого пальца и его ограничение соотношения сторон, вы, вероятно, получите ошибку в построителе интерфейса, которая говорит вам, что вы должны установить ограничения для x и y координат этого представления. Без таких ограничений вы получите неоднозначную компоновку, что означает, что существует множество вариантов того, как установить положение вашего представления.

Хотя ограничений нет вообще, система преобразует frame и autoresizing mask вида в ограничения, так что вы получили действительный набор ограничений для установки позиции и размера представления, поэтому представление является видимым. Поскольку вы добавляете любые ограничения для просмотра, вы должны добавить достаточно ограничений, чтобы четко определить положение и размер этого представления по этим ограничениям.

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