从 iOS 7 开始,Apple 鼓励开发者在导航栏和其他半透明元素后面显示内容。
假设我在导航 View 中嵌入了一个 View Controller ,向该 View Controller 添加了一个 map View ,并将 map View 的边缘扩展到屏幕的边界(因此即使在导航栏的后面 ) 给出了预期的效果:导航栏模糊了 map View 的内容。
但 iOS 还做了其他事情:虽然 map 本身呈现在导航栏后面,但如果用户必须看到或触摸的 ui 元素(例如指南针)实际上被偏移了,所以它不是被导航栏隐藏;一图胜千言:
我想知道的是我应该使用 map View 的什么属性来使其以编程方式表现得像这样? (因为如果我在 map 顶部手动添加半透明 View ,指南针将被隐藏,所以我希望能够做到这一点)?这个问题也适用于其他类型的 View ,比如 TableView ,是不是同样的原理?
谢谢。
最佳答案
对于 UIScrollView
及其子类(UICollectionView
、UITableView
),将 contentInset
设置为类似于, UIEdgeInsetsMake(64.0/* TOP */, 0.0/* LEFT */, 44.0/* BOTTOM */, 0.0/* RIGHT */);
将是要走的路。
您可以检查 UIViewController
的属性 topLayoutGuide
和 bottomLayoutGuide
以确定您必须插入多少。
对于 MKMapView
,我尝试以编程方式添加它,它似乎自动调整了指南针的框架和“合法”标签。我会说它考虑了 topLayoutGuide
和 bottomLayoutGuide
来布置按钮和标签。
关于ios - 如何以编程方式重现此 "offset behavior"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30549711/