Xcode 9- "фиксированные ограничения ширины могут привести к обрезке" и другие предупреждения локализации



Я загрузил новый Xcode и в Interface Builder у меня возникли тонны проблем с предупреждениями, которые говорят такие вещи, как:




Фиксированные Ограничения Ширины Могут Привести К Отсечению




Это выглядит так:



enter image description here



У меня есть локализация для нескольких языков, и я понимаю предупреждение о том, что на другом языке размер метки может измениться, но у моего приложения нет этой проблемы. Я запустил и протестировал его в Xcode 8 вчера, это был хороший. Я не хочу тратить часы и часы, добавляя бессмысленные новые ограничения.



любые предлагаемые решения?

733   12  

12 ответов:

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

здесь происходит несколько разных вещей. Я смог отключить предупреждения фиксированной ширины в моем собственном приложении, изменив ширина интервалов между объектами от фиксированной ширины до больше или равно или меньше или равно.

Это можно сделать с помощью выбрав объект в interface builder, перейдите в Инспектор размеров и измените его там:

enter image description here


или выберите ограничение из структуры документа, перейдите в Инспектор размеров и измените его там:

enter image description here



Что касается предупреждения в верхней части экрана:

фиксированные начальные и конечные ограничения с ограничением центра может причина отсечения

вот скриншот из моего собственного приложения, в котором я получал точно такое же предупреждение:

enter image description here

У меня был ярлык с @ sign установите для ведущих и конечных кнопок, но также для выравнивания центра с меткой рейтинга. Однажды Я удалено ограничение выравнивания центра, предупреждение исчезло, но я остался с неправильно выложил набор объекты.

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


Edit

Как покой пишет в комментариях, иногда просто добавляя >= 0 будет то, что вам нужно, так как вы убедитесь, что два элемента не перекрываются.

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

p. s.это решение работает для iOS. Для macOS попробуйте > = или

Disrespect Language Direction

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

Xcode поможет вам добавить эти ограничения автоматически:

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

Image

Если у вас есть эта проблема с кнопка без текста (только изображение), попробуйте удалить "заголовок по умолчанию", который все еще может быть установлен для кнопки:

Image

С Labels, вы можете установить Lines и 0 и Autoshrink свойства Minimum Font Size удалить Fixed Width Constraints May Cause Clipping предупреждения, как это:

enter image description here

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

enter image description here

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

Swift 4, Xcode 9.1:

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

если ваш superview / s правильно установлен, вы можете попытаться "объяснить" своему объекту, что такое правильное положение в представлении, установив "горизонтально в контейнер" ограничения:

enter image description here

у меня была та же проблема, но когда я меняюсь на >= он автоматически устанавливает константу в 0, Если я выберу 60 например, предупреждение появляется снова. Так что я был в петле с проблемой.

я мог бы исправить встраивание моего Label на View

Editor > Embed In > View

на Label Я Top,Bottom,Leading и Trailing С constant = 0

constraints

на View я поставил constraints что я был ожидал раньше.

У меня была такая же проблема при переходе на Xcode 9 и нашел подход, который полезен для некоторых видов макетов. В моем случае мне нужен заголовок таблицы, в котором два столбца (UILabels) имеют фиксированную ширину, а другой-переменную ширину. Независимо от того, как я указал ширину столбца (включая использование ограничений больше или равно вместо равного и т. д.), Я продолжал получать предупреждение о возможной подрезки. В моем случае я хотел, чтобы столбец переменной ширины (UILabel) обрезался при необходимости. Я мог бы просто проигнорировать предупреждение, но не нравится это делать.

подход, который работал здесь, заключался в создании UIView с соответствующими ограничениями размера и внедрении UILabel в качестве подвида в UIView. Затем усечение происходит, если это необходимо, и я не получаю предупреждения. Это работает независимо от того, находится ли UIView/embedded UILabel в StackView или нет.

Это по сути тот же подход, что Haroldo Gondim но вы можете видеть, он также работает с или без StackView.

на следующем рисунке показан подход, С и без StackView. "SpacerName" - это переменная ширина UIView, содержащая метку, а" SpacerPD " - одна с фиксированной шириной 80. [Цвета не имеют значения; просто там, чтобы показать, где находятся виды.]

enter image description here

Как вы можете видеть на изображении ниже, у меня была ошибка "Фиксированные Ограничения Ширины Могут Привести К Отсечению" потому что, хотя я установил свое текстовое поле вертикально центрированным, а моя метка имела ограничение левого поля, я не определил ограничение для текстового поля по отношению к метке, поэтому XCode предупреждал меня, что текстовое поле может обрезать (быть отображено выше) метку.

enter image description here

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

у меня была аналогичная проблема при попытке иметь кнопку с теми же отступами от краев супер-вида.

Error case

Я в конечном итоге с помощью horizontal center ограничение и equal widths ограничения super view.

My solution

Чтобы Исправить Ошибку: фиксированные ограничения ширины могут привести к отсечению " и другой локализации Вам нужно выбрать вид / объект, перейти в "показать инспектор размеров", найти ограничение ширины и установить константу на большее или равное:

Size Inspector

Чтобы Исправить Ошибку: отсутствует ограничение Leading/Trailing, которое может привести к перекрытию с другими представлениями

Это означает, что представление/объект Xcode жалуется о, отсутствует начальное или конечное ограничение для соседнего представления.

удерживая элемент управления, перетащите его на ближайший вид / объект

Contrl + PressClick

Добавьте начальное или конечное ограничение

Leading/Trailing Constraint

Comments

    Ничего не найдено.