Маски авторазмера не очень хорошо справляются с этим случаем, как вы уже обнаружили.Они отлично работают, если вы хотите сохранить что-то на фиксированном расстоянии от суперпредставления или пропорционально изменить размер / изменить положение где-нибудь посередине.Вы можете сделать удивительную сумму с помощью только этих опций, но смещение вне центра - это не то, что вы можете сделать легко
Если вы хотите сделать это с автоматическими размерами масок, вам нужно поместить коробку в другую пустую UIView
, который находится в более удобном положении для авторазмера масок.Это будет выглядеть следующим образом.
Вот что вы получили прямо сейчас:
center
|
|---------------------------------------------------| <-- The main parent view
|-----| <-- your view
То, что вы хотите, это:
center
|
|---------------------------------------------------| <-- The main parent view
|--------------------| <-- The new view, centered in the parent
|-----| <-- your view
Новый вид должен бытьполностью прозрачные, имеют фиксированную ширину и гибкое расстояние с обеих сторон родительского вида.Он должен быть достаточно широким, чтобы полностью вместить смещенную от центра коробку, и не шире.Если он расположен точно в центре основного родительского вида, он останется по центру независимо от размера родительского вида.
Затем добавьте поле в качестве подпредставления нового представления сфиксированная ширина и фиксированное расстояние от левого края родительского элемента.Теперь, используя только маски с автоматическим изменением размера, ваш вид останется там, где вам нужно.
Более простой вариант может заключаться в том, чтобы переопределить -layoutSubviews
в вашем представлении или -viewDidLayoutSubviews
на вашем контроллере (доступно iOS 5.0 и более поздние версии)и просто вручную расположить вид.Но вы спросили, как это сделать с помощью масок с автоматическим изменением размера, вот что вы получили.Без добавления дополнительного представления невозможно использовать маски с автоматическим изменением размера для получения требуемого поведения при позиционировании.