Подтвердить что ты не робот

Я должен обновлять фрейм всего в раскадровке каждый раз, когда я запускаю Xcode

Поэтому каждый раз, когда я открываю свой проект в Xcode, у меня есть 100 предупреждений, потому что кадры каждого объекта пользовательского интерфейса были перемещены. Мне нужно потратить время и перейти к каждому UIViewController и обновить фреймы на нем.

Есть ли причина, по которой это происходит? Как я могу это исправить? Любую информацию, которую я должен упомянуть?

4b9b3361

Ответ 1

Используете ли вы репозиторий для своего кода? Возможно, какой-либо файл конфигурации отсутствует, возможно, неправильно отправлен

Ответ 2

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

Если выше не работает для вас, вы можете попробовать создать локальный репозиторий, созданный Xcode, и передать код перед тем, как выйти из Xcode.

Надеюсь, это поможет!

Ответ 3

Я считаю, что это было задано ранее здесь: Интерфейс Builder постепенно уменьшает раскадровку, размеры и представления репозиций

Я еще не видел исправления проблемы, но ответ, который я там разместил, скорее всего, имеет место. fooobar.com/questions/96310/...

По крайней мере, один источник связан с тем, что раскадровки разрешают макеты на полные границы пикселей (x = 7.0, y = 10.0) или на частичные границы (x = 7.5, y = 10.5). Насколько я могу судить, это можно пересчитать каждый раз, когда вы просматриваете раскадровку, и округление фактически определяется на основе текущей среды отображения.

Вы можете преднамеренно вызвать это поведение, просмотрев раскадровку на экране сетчатки, а затем просмотрите ее на дисплее без сетчатки. С моим дисплеем с двумя мониторами, если я просто перетащил раскадровку с одного экрана (сетчатка 5k) на другую (не сетчатка), это создаст поток несогласованных ограничений. К сожалению, переместить его обратно не исправить! Попробуйте сами (или не... это боль, чтобы исправить).

В командной среде легко увидеть, как это может произойти, как только два человека с разными настройками будут видеть одну и ту же раскадровку.

Как это исправить? Я не слышал о рабочем процессе, который правильно исправляет или избегает проблемы, к сожалению.

Ответ 4

Вот несколько причин, которые я видел для периодически неулокальных просмотров. Я не уверен, что любой из них отвечает за проблему, которую вы видите - обычно это приведет к тому, что несколько мнений будут неуместны здесь и там, а не во всех представлениях в вашем раскадровке. Но я перечислил их на всякий случай, если это поможет.

  • Различные члены команды могут использовать разные версии Xcode, которые могут позиционировать определенные взгляды несколько иначе, и которые, безусловно, изменят версию инструментария раскадровки и т.д.
  • Ограничения обычно не довольны дробной шириной/высотой в них. Это может быть трудно обнаружить - например, у вас может быть представление, чья внутренняя высота - это нечетное число пикселей, вертикально центрированных в представлении, высота которого равно четному числу пикселей, в результате чего внутренний вид начинается с полупикселя смещение и хотите, чтобы репозиционирование было ниже или выше при повторном открытии раскадровки.

Ответ 5

Для xib файлов вы можете легко написать script, который автоматически обновляет фреймы:

ibtool input.xib --update-frames --write input.xib

Но вы не должны беспокоиться об этих предупреждениях: кадры будут автоматически корректироваться во время выполнения.

Ответ 6

Это может произойти из-за наличия 4-кратного внешнего дисплея. У всех в моей команде нет такой проблемы, только у меня.

После открытия Xcode пытается выровнять логические точки с физическими пикселями, поэтому все перемещается на 0,5 пункта.