iphone - 如何使用 Autoresizing Mask 将 UIView 锚定在中间点之外的几个像素?

标签 iphone objective-c ios ipad

观察以下屏幕截图:

iPhone Autoresizing Mask Question

如何使用 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/

相关文章:

iphone - navigationController.navigationBarHidden 和 navigationController.navigationBar.hidden 有什么区别?

iphone - 将文本框数据写入Plist

ios - 使用Mapkit框架加载openstreetmap

objective-c - 如何从网站动态获取数据并将其添加到 iPhone 应用程序?

iphone - 如何在程序重新运行时递增整数并保存以供使用?

ios - 用于登录 iOS 的 Touch ID

iphone - colorWithPatternImage 和 setCornerRadius 问题

ios - 带有投影的 UISplitViewController 可能吗?

ios - NSFileManager 不删除临时文件夹中的文件

ios - 如何获取 iOS 中可用系统声音的列表?