如何重现这种"偏移行为"编程?

时间:2015-05-30 18:17:15

标签: ios uikit interface-builder

自iOS 7起,Apple鼓励开发人员在导航栏和其他半透明元素后面显示内容 让我们说我在导航视图中嵌入了一个视图控制器,向该视图控制器添加了一个地图视图,并将地图视图的边缘扩展到了屏幕的边界(所以即使后面导航栏)给出了预期的效果:导航栏模糊了地图视图的内容 但是iOS也做了其他的事情:虽然地图本身是在后面导航栏,但是如果用户必须看到或触摸的ui元素(例如指南针)实际上已经被删除,那么它就不会出现#39 ; t由导航栏隐藏;一张图片胜过千言万语:
enter image description here

我想知道的是,我应该使用地图视图的哪些属性来使其按程序设计行为? (因为如果我在地图顶部手动添加半透明视图,指南针将被隐藏,所以我希望能够这样做)?这个问题也适用于其他类型的观点,例如表格视图,它的原理是否相同?

谢谢。

1 个答案:

答案 0 :(得分:1)

对于UIScrollView及其子类(UICollectionViewUITableView),将contentInset设置为类似UIEdgeInsetsMake(64.0 /* TOP */, 0.0 /* LEFT */, 44.0 /* BOTTOM */, 0.0 /* RIGHT */);之类的内容将是最佳选择

您可以检查UIViewController的属性topLayoutGuidebottomLayoutGuide,以确定您需要插入的内容。

对于MKMapView,我尝试以编程方式添加它,看起来它会自动调整指南针的框架和“Legal”标签。我会说,在布局按钮和标签时​​需要考虑topLayoutGuidebottomLayoutGuide