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