Где установить translatesAutoresizingMaskIntoConstraints в Xcode 4.5
Мне нужно установить translatesAutoresizingMaskIntoConstraints
в NO
. По умолчанию установлено значение YES
(чтобы помочь большинству приложений, которые переходят из расположений и пружин в новый автоматический макет).
Где-то в Xcode, где значение по умолчанию можно изменить с YES
на NO
?
Или мне нужно вручную установить его для каждого вида?
Ответы
Ответ 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 и более поздних версиях. Благодаря
Ответ 4
В соответствии с документацией это свойство автоматически устанавливается на NO
, если представление добавлено через Interface Builder.
https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/#//apple_ref/occ/instp/UIView/translatesAutoresizingMaskIntoConstraints