ios - 如何以编程方式重现此 "offset behavior"?

标签 ios uikit interface-builder

从 iOS 7 开始,Apple 鼓励开发者在导航栏和其他半透明元素后面显示内容。
假设我在导航 View 中嵌入了一个 View Controller ,向该 View Controller 添加了一个 map View ,并将 map View 的边缘扩展到屏幕的边界(因此即使在导航栏的后面 ) 给出了预期的效果:导航栏模糊了 map View 的内容。
但 iOS 还做了其他事情:虽然 map 本身呈现在导航栏后面,但如果用户必须看到或触摸的 ui 元素(例如指南针)实际上被偏移了,所以它不是被导航栏隐藏;一图胜千言:
enter image description here

我想知道的是我应该使用 map View 的什么属性来使其以编程方式表现得像这样? (因为如果我在 map 顶部手动添加半透明 View ,指南针将被隐藏,所以我希望能够做到这一点)?这个问题也适用于其他类型的 View ,比如 TableView ,是不是同样的原理?

谢谢。

最佳答案

对于 UIScrollView 及其子类(UICollectionViewUITableView),将 contentInset 设置为类似于, UIEdgeInsetsMake(64.0/* TOP */, 0.0/* LEFT */, 44.0/* BOTTOM */, 0.0/* RIGHT */); 将是要走的路。

您可以检查 UIViewController 的属性 topLayoutGuidebottomLayoutGuide 以确定您必须插入多少。

对于 MKMapView,我尝试以编程方式添加它,它似乎自动调整了指南针的框架和“合法”标签。我会说它考虑了 topLayoutGuidebottomLayoutGuide 来布置按钮和标签。

关于ios - 如何以编程方式重现此 "offset behavior"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30549711/

相关文章:

iphone - 快速枚举在objective-c中没有给出正确的对象类型?

ios - 具有大型 JSON 响应的 AFNetworking 2.0

iphone - 是否有快捷键可以使 ImageView 尺寸适合 .png?

ios - 将 subview 宽度设置为与 super View 成比例

iphone - iPhone Interface Builder 中的自定义控件

ios - Appstore 拒绝 5. 1.5 合法 : Privacy - Location Services

ios - Cordova XCode 构建 iOS 抛出 clang : error: unable to execute command: Segmentation fault: 11

iphone - 带有 Open GL ES 的 UIKit 粒子系统?

可选 UI 元素的快速性能

ios - 如何在使用 UITableViewDiffableDataSource 时移动 UITableView 单元格?