Примечание. Вещи переместились, поскольку этот вопрос был задан; см. здесь для хорошего недавнего обзора.
Перед автоматической компоновкой вы можете изменить опорную точку слоя вида, не перемещая вид, сохраняя фрейм, устанавливая опорную точку и восстанавливая кадр.
В мире автомакетов мы больше не устанавливаем фреймы, но ограничения, похоже, не соответствуют задаче корректировки позиции представления обратно туда, где мы хотим. Вы можете взломать ограничения для изменения вашего представления, но при повороте или других событиях изменения размера они снова становятся недействительными.
Следующая яркая идея не работает, поскольку она создает "Недопустимое сопряжение атрибутов макета (слева и ширина)":
layerView.layer.anchorPoint = CGPointMake(1.0, 0.5);
// Some other size-related constraints here which all work fine...
[self.view addConstraint:
[NSLayoutConstraint constraintWithItem:layerView
attribute:NSLayoutAttributeLeft
relatedBy:NSLayoutRelationEqual
toItem:layerView
attribute:NSLayoutAttributeWidth
multiplier:0.5
constant:20.0]];
Мое намерение здесь было установить левый край layerView
, вид с исправленной узловой точкой, до половины его ширины плюс 20 (расстояние я хочу застегивается от левого края надтаблицы).
Можно ли изменить опорную точку, не изменяя расположение представления, в представлении, которое выложено с автоматическим расположением? Нужно ли использовать жестко заданные значения и редактировать ограничение при каждом повороте? Надеюсь, что нет.
Мне нужно изменить опорную точку, чтобы при применении преобразования к представлению я получил правильный визуальный эффект.