2016-11-17 3 views
1

Я не могу понять, что я делаю неправильно здесь .... Супер базовые вещи, но я не вижу никаких других жалоб в сети, так что, возможно, это то, что я делаю неправильно?XCode 8 неправильное расположение просмотров

Я использую XCode 8, и я нахожу, что при выравнивании представления к центру X однорангового просмотра, которое по центру сосредоточено на экране, XCode фактически устанавливает выравнивание по центру X верхнего уровня Посмотреть. Экранные снимки: Super basic UIView and UILabel

Это супер базовый UIView с UILabel, выровненным по центру UIView X (ограничение выделено). Ниже вид ... нет иерархия сюрпризов ...

View hierarchy

И выделенное ограничение:

enter image description here

Вы можете видеть, что ограничение относится к MyLabel.centerX к MyView .centerX, как ожидается. Отношение равно 0,5, что означает, что MyLabel должен располагаться на расстоянии 25% от левого края MyView. Это не так: если вы внимательно посмотрите на первый снимок экрана, вы увидите, что он не на 25% от края MyView, а на 25% от края экрана. Изменение раскадровки на экране IPad, как показано ниже показывает проблему более четко:

iPad screen

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

iPhone SE - non-centered view

И IPAD цветопередача:

iPad view

Любые мысли будут оценены ....

+0

У меня есть резервная копия. Итак, я просто открываю свою резервную копию в Xcode 7.3 open Storyboard как копию исходного кода и вставляю ее в свой последний код. Это оно. Это работает для меня. –

ответ

1

Вы можете видеть, что ограничение относится к MyLabel.centerX к MyView .centerX, как ожидается. Отношение равно 0,5, что означает, что MyLabel должен располагаться на расстоянии 25% от левого края MyView.

Поставив CenterX MyLabel к CenterX MyView есть вы на самом деле не выравнивая CenterX MyLabel к передней кромке MyView в ...

С CenterX MyView выравнивается с CenterX корневого UIView, в CenterX MyLabel является делает именно то, что вам поручил это сделать.

Транзитивное свойство: если a = b и b = c, то a = c. В этом случае CenterX корня UIView (SuperView)

Вы должны изменить второй элемент из MyView.Center X на переднем крае мой взгляд в

0

Я думаю, вы можете просто иметь неправильное представление о том, что означает, что множитель при применении к центра. Вещь сосредоточена по отношению к ее надзору.Самый простой способ увидеть это с конфигурацией, как это:

enter image description here

оранжевый вид ничего не знает о центрах; он позиционируется горизонтально с помощью ограничения ведущей кромки, которое я выделил. Синий вид имеет центр x, выровненный с центром оранжевого вида x, с множителем 2. Как вы можете видеть, результат не имеет ничего общего с шириной оранжевого вида: это означает «в два раза больше справа, так как центр оранжевого вида».

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