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

Где установить translatesAutoresizingMaskIntoConstraints в Xcode 4.5

Мне нужно установить translatesAutoresizingMaskIntoConstraints в NO. По умолчанию установлено значение YES (чтобы помочь большинству приложений, которые переходят из расположений и пружин в новый автоматический макет).

Где-то в Xcode, где значение по умолчанию можно изменить с YES на NO?

Или мне нужно вручную установить его для каждого вида?

4b9b3361

Ответ 1

Это большой вопрос - и я попытался найти ответ на себя. К сожалению, похоже, что нет "быстрого исправления". В настоящее время Apple рассматривает конструкцию на основе ограничений. Opt-in - даже назвав раздел UIView Ссылка на класс:

Переход к шаблону на основе ограничений

Но этот Opt-in не является глобальным. Я полагаю, это потому, что не все выглядит хорошо, если вы просто превращаете Спрингс и Струт в ограничения. Некоторые элементы пользовательского интерфейса ломаются, или вы получите тонну неудовлетворительных ограничений.

Я могу думать о одном возможном решении - я сам не пробовал, но вы можете создать категорию на UIView, которая устанавливает все UIView объекты для возврата NO для - (BOOL)translatesAutoresizingMaskIntoConstraints. Хотя я не знаю, что это сломает, он глобально установил translatesAutoresizingMaskIntoConstraints в NO.

Вот хорошее введение в категории, если вы хотите узнать больше о них!

Ответ 2

Я опаздываю на этот вопрос, но упомянутый вариант все еще отсутствует в Xcode 5 и 6, поэтому вопрос все еще имеет смысл.

На самом деле мы всегда можем установить значение для любого свойства объекта view/control/object, добавив в Storyboard (Interface Builder) User Defined Runtime Atribute, как показано ниже.

И он также работает для translatesAutoresizingMaskIntoConstraints. Поэтому вопрос может быть решен.

enter image description here

Ответ 3

Когда вам нужно изменить размер или позицию вашего подвью. Используйте метод (BOOL)translatesAutoresizingMaskIntoConstraints, прежде чем устанавливать кадр подзапроса.

[self.benchmarkButton removeFromSuperview];
[self.benchmarkButton setTranslatesAutoresizingMaskIntoConstraints:YES];
[self.benchmarkButton setFrame:CGRectMake(20, self.benchmarkButton.frame.origin.y+40, 260, 30)];
[self.benchmarksView addSubview:self.benchmarkButton];

То, как ваш подзаголовок не будет бороться с ограничениями, поскольку он по умолчанию (AutoLayout) в Xcode 4.3 и более поздних версиях. Благодаря