观察以下屏幕截图:
如何使用 Autoresizing Mask 将 UIView 锚定在中间点之外的几个像素处,使其始终位于中间点左侧 20px 处?
我试过设置autoresizingMask
属性(property)给 UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin
它并没有真正做到这一点。
如果我将 View 包装在另一个更大的 View 中,该 View 填满整个屏幕并且根本不调整大小,我确实设法做到了。但是有没有办法在没有额外 View 的情况下做到这一点?
最佳答案
正如您已经发现的那样,自动调整大小的蒙版不能很好地处理这种情况。如果您想与 super View 保持固定距离或在中间某处按比例调整大小/重新定位,它们会非常有用。仅使用这些选项,您就可以做很多令人惊讶的事情,但是偏心锚定并不是您可以轻松做到的
如果你想用自动调整蒙版来做到这一点,你需要把你的盒子放在另一个空的UIView
,一个在自动调整蒙版时更方便的位置。它看起来像这样。
这是您现在所拥有的:
center
|
|---------------------------------------------------| <-- The main parent view
|-----| <-- your view
你想要的是这样的:
center
|
|---------------------------------------------------| <-- The main parent view
|--------------------| <-- The new view, centered in the parent
|-----| <-- your view
新 View 应该是完全透明的,具有固定的宽度,以及与父 View 两侧的灵活距离。它应该足够宽以完全包含偏离中心的盒子,并且不能更宽。如果它恰好位于主父 View 的中心,那么无论父 View 的大小发生什么变化,它都会保持居中。
然后将您的框添加为新 View 的 subview ,与父级的左边缘具有固定的宽度和固定的距离。现在,仅使用自动调整蒙版,您的 View 将保持在您想要的位置。
一个更简单的选择可能是覆盖
-layoutSubviews
在您看来,或 -viewDidLayoutSubviews
在您的 Controller 上(可用的 iOS 5.0 及更高版本),只需手动定位 View 。但是您问如何使用自动调整大小的蒙版来做到这一点,这就是您所得到的。如果不添加额外的 View ,就无法使用自动调整大小的蒙版来获得您想要的定位行为。
关于iphone - 如何使用 Autoresizing Mask 将 UIView 锚定在中间点之外的几个像素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7936020/