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

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

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

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

4 ответов


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

выбор в макете на основе ограничений

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

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

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


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

на самом деле, мы всегда можем установить значение для любого свойства view/control/object, добавив Пользовательская Среда Выполнения Atribute в раскадровке (Interface Builder), как на следующем скриншоте.

и он также работает для translatesAutoresizingMaskIntoConstraints. Так что вопрос может быть разрешенный.

enter image description here


когда вам нужно изменить размер или положение вашего подвида. Использовать (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 и более поздних версиях. Спасибо


согласно документации, это свойство автоматически принимает значение NO Если представление добавлено через Interface Builder.

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/#//apple_ref/occ/instp/UIView/translatesAutoresizingMaskIntoConstraints