Xcode 9 - "фиксированные ограничения ширины могут вызвать отсечение" и другие предупреждения о локализации
Я загрузил новый Xcode и в Interface Builder у меня куча проблем с предупреждениями, которые говорят такие вещи, как:
Фиксированные Ограничения Ширины Могут Вызвать Отсечение
Это выглядит так:
У меня есть локализация для нескольких языков, и я понимаю предупреждение о том, что на другом языке размер метки может измениться, но у моего приложения нет этой проблемы. Я побежал и протестировал его в Вчера Xcode 8 был в порядке. Я не хочу тратить часы и часы, добавляя бессмысленные новые ограничения.
любые предлагаемые решения?
12 ответов
Я получал те же предупреждения, даже без нескольких языков в моем приложении, что привело меня к тому, чтобы узнать, что на самом деле происходит. . .
здесь происходит несколько разных вещей. Я смог отключить предупреждения фиксированной ширины в моем собственном приложении, изменив ширина интервалов между объектами от фиксированной ширины до больше или равно или меньше или равно.
Это можно сделать выбрав объект в interface builder, перейдите в Инспектор размеров и измените его там:
или выберите ограничение из контура документа, перейдите в Инспектор размеров и измените его там:
Что касается предупреждения в верхней части экрана:
фиксированные ведущие и конечные ограничения с ограничением центра может причина отсечения
вот скриншот из моего собственного приложения, в котором я получал точно такое же предупреждение:
У меня был ярлык со знаком@!--1-->установить на ведущие и конечные кнопки, а также выровнять центр с меткой рейтинга. Однажды Я ... --1-->удалено ограничение выравнивания центра, предупреждение исчезло, но я остался с неправильно выложил набор объекты.
именно тогда я смирился с примите представление стека. Как раздражает, как это использовать, когда вы получаете все ограничения и настройки, он излагает красиво и без предупреждения.
редактировать
As покой пишет в комментариях, иногда просто добавляет >= 0 будет то, что вам нужно, так как вы убедитесь, что два элемента не перекрываются.
вы можете попробовать отключить "Respect Language Direction" на основе ограничения, чтобы заставить замолчать предупреждение и посмотреть, помогает ли оно. Выберите ограничение и откройте инспектор атрибутов/размеров. Пожалуйста, см. прикрепленную картинку.
p.s. Это решение работает для iOS. Для macOS попробуйте > = или
для меток и кнопок, которые локализованы это предупреждение имеет смысл, и вы должны предоставить необходимые ограничения, чтобы ваши метки не перекрывались. Если они не перекрываются сейчас, они могут быть в будущем, поэтому не помешает обеспечить ограничения.
Xcode поможет вам добавить эти ограничения автоматически:
в контуре документа раскадровки нажмите на желтую стрелку и выберите "фиксированный ведущий" или "фиксированный трейлинг", в зависимости от того, где находится текст ваш экран (слева или справа). Это исправит его для большинства проблем.
Если у вас есть эта проблема с кнопка без текста (только изображение), попробуйте удалить "заголовок по умолчанию", который все еще может быть установлен для кнопки:
С Labels
, вы можете установить Lines
is 0
и Autoshrink
свойства Minimum Font Size
удалить Fixed Width Constraints May Cause Clipping
предупреждения, как это:
Я знаю, что на этот вопрос уже был дан ответ, но то, что я сделал, чтобы исправить эту ошибку в моем случае, было добавить свойство "соотношение сторон", а затем устранить ограничение ширины или высоты, это сработало довольно хорошо и было меньше усилий, и мне удалось сохранить тот же вывод и адаптировать мое представление для разных устройств.
Swift 4, Xcode 9.1:
об этом вопросе, я думаю, ваш объект Не знаю, что это правильное положение центра в контексте его superview, и через удалить, больше, чем или другие ведущие / trealing настройки в большинстве случаев не работают правильно. Во-первых, вы должны проверить правильные ограничения вашего superview.
если ваш superview / s правильно настроен, вы можете попытаться "объяснить" своему объекту, что такое правильное положение в представлении, установив "горизонтально в контейнер" ограничения:
у меня была такая же проблема, но когда я меняя >=
он автоматически устанавливает константу в 0
, Если я выберу 60
например, предупреждение появляется снова. Так что я был в курсе проблемы.
я мог бы исправить встраивание моего Label
на View
Editor > Embed In > View
на Label
Я Top
, Bottom
, Leading
и Trailing
С constant = 0
на View
я поставил constraints
что я был ожидал раньше.
У меня была та же проблема при переходе на Xcode 9 и нашел подход, который полезен для определенных видов макетов. В моем случае мне нужен заголовок таблицы, в котором два столбца (UILabels) имеют фиксированную ширину, а другой-переменную ширину. Независимо от того, как я задал ширину столбца (включая использование ограничений больше или равно вместо равного и т. д.), Я продолжал получать предупреждение о возможной подрезки. В моем случае я хотел, чтобы столбец переменной ширины (UILabel) был обрезан, если это необходимо. Я мог бы просто проигнорировать предупреждение, но мне это не нравится.
подход, который работал здесь, заключался в создании UIView с соответствующими ограничениями размера и встраивании UILabel в качестве подвида в UIView. Затем при необходимости происходит усечение, и я не получаю предупреждения. Это работает независимо от того, находится ли UIView/embedded UILabel в StackView или нет.
Это по сути тот же подход, что Haroldo Gondim но вы можете видеть, он также работает с или без StackView.
на следующем рисунке показан подход, С и без StackView. "SpacerName" - переменная ширина UIView, содержащая метку, а" SpacerPD " - одна с фиксированной шириной 80. [Цвета не имеют значения; просто там, чтобы показать, где находятся виды.]
Как вы можете видеть на изображении ниже, у меня была ошибка "Фиксированные Ограничения Ширины Могут Вызвать Отсечение" потому что, хотя я установил, что мое текстовое поле вертикально центрировано, а моя метка имеет ограничение левого поля, я не определил ограничение для текстового поля по отношению к метке, поэтому XCode предупреждал меня, что текстовое поле может обрезать (быть отображено выше) метку.
после добавления левого ограничения в текстовое поле, чтобы всегда оставаться на некотором расстоянии от метки, ошибка считалась разрешенной XCode, и это больше не беспокоило меня предупреждением об ограничении.
у меня была аналогичная проблема при попытке иметь кнопку с теми же прокладками с краев супер-вида.
Я закончил с использованием horizontal center
ограничение и equal widths
ограничения super view
.
Чтобы Исправить Ошибку: фиксированные ограничения ширины могут вызвать отсечение " и другую локализацию Вам нужно выбрать вид / объект, перейти в "показать инспектор размеров", найти ограничение ширины и установить константу больше или равна:
Чтобы Исправить Ошибку: отсутствует ограничение Leading/Trailing, которое может привести к перекрытию с другими представлениями
Это означает, что view/object Xcode жалуется о, отсутствует ведущее или конечное ограничение для соседнего представления.
удерживая управление, перетащите его на ближайший вид / объект