如何从键盘扩展中获取安全区域底部内边距(home indicator区域)的高度
针对键盘扩展获取底部home indicator对应安全区高度的解决方案:
方案1:通过当前view所属window获取(推荐)
该方法完全符合扩展沙箱权限要求,不需要访问全局应用对象,适配横竖屏和所有机型,需要在view布局完成的回调中执行(比如viewWillLayoutSubviews、viewDidAppear,不要在viewDidLoad阶段调用,此时view还未挂载到window上,取值为0):
if let window = view.window { let bottomSafeHeight = window.safeAreaInsets.bottom // 此处获取的bottomSafeHeight就是键盘下方home indicator区域的高度 }
方案2:硬编码机型适配(备选)
如果特殊iOS版本下方案1生效异常,可以通过屏幕尺寸判断设备类型返回对应高度:
let bottomSafeHeight: CGFloat // 竖屏判断逻辑 switch UIScreen.main.bounds.height { case 812, 844, 852, 926, 932: // 所有带home indicator的iPhone竖屏高度 bottomSafeHeight = 34 case 1024, 1112, 1180, 1194, 1366: // iPad类机型 bottomSafeHeight = 20 default: // 带实体home键的旧机型 bottomSafeHeight = 0 }
注意:该方案需要在苹果发布新机型时同步更新适配规则,优先级低于方案1。
内容的提问来源于stack exchange,提问作者Kqtr
相关产品推荐
相关产品推荐

