iOS 11在状态栏区域带来了一些新的,也许是不直观的行为,这对使用Apache Cordova或Ionic等工具的开发人员尤为重要。尤其是这种行为变化会影响到任何基于Web的应用程序,这些应用程序在进行iOS 11构建时使用fixed定位标题栏。此文章可帮助您了解iOS 11中的Webview视口。

注意:现有应用程序将继续工作,因为它们始终可以对其视口行为进行更改。这只会影响使用Xcode 9和iOS 11的目标编译的应用程序。
要了解这些变化,我们需要看看它的历史。
状态栏与安全区
在早起版本的iOS上,状态栏只是一个固定屏幕上方的黑色条带,并且是不可触摸的。它属于系统UI的一部分,你的app运行在它的下方空间中。
随着iOS7的推出,状态栏变成了透明的,它的颜色取自应用程序导航栏的颜色。对于运用在webview中的app比如Cordova,通常要判断iOS的版本然后在固定的导航栏上方预留20px的边距,以便正确的填充导航栏。
较新版的iOS对状态栏引入了一些小的修订版本,包括在打电话时状态栏中显示一个额外的横幅,或者应用程序在后台使用定位功能的提示。
在native端,大部分这些兼容措施都被UINavigationBar以及自动布局指南自动解决掉了。屏幕顶部底部布局指南会自动的判断出当前状态栏的正确高度,确保app内容区是『安全区』,状态栏不会覆盖到该区域。如果你根据顶部布局指南使用UINavigationBar,则iOS也会自动将其颜色延伸到状态栏后面。对于Web端来说,没有这样自动化的解决方案。
iOS 11的改变
iOS 11与早起版本的不同在于,webview内容区超出了安全区。这也就是说,如果你有一个头部导航条使用fixed定位元素并且使用top: 0,那么它会在屏幕顶部20px的下方渲染:对齐到状态栏的底部。
当你向下滚动时,它将向上移动到状态栏的下面。
当你向上滚动时,它将会重新跌落到状态栏的下方(此时会留下一个尴尬的间隙,内容会在这20px的间距内展示)
苹果为什么会这么做呢?
如果你看到了iphone X的设计图,你就会有一个印象:iphone X未来有一个不规则的屏幕形状,在屏幕顶部有一段『刘海』,用来放置话筒与相机。如果fixed定位的元素定位到了真正的屏幕顶部,那该元素中间部分会被扬声器与相机覆盖,从而无法访问。
通过对齐到状态栏的底部,可以确保标题中的任何内容都可以访问。
除了现在的应用程序有一个尴尬的标题栏看起来很槽糕,随着页面上下移动,标题栏会被覆盖到状态栏的后面。
iOS 11 修复
幸运的是,苹果给我们一种方式来控制这种形式,通过meta标签。更幸运的是,这种新的视口行为也适用于老的版本,包括弃用的UIWebView!
这个视口选项是:viewport-fit,它有三个可能的值:
所以要将你的标题栏恢复到屏幕的顶部,就像在iOS 10中的状态栏一样,只需要添加viewport-fit=cover到meta中标签中既可。
iPhone X
但是,iPhone X的形状不规则呢?状态栏不在是20px高,并且相机与扬声器都向内凸出,你的标题栏内容将会对用户完全不可用。同样需要注意的是,这也适用于固定在屏幕底部的页脚条,它将会被麦克风挡住。
注意:你的app只能使用iPhone的全屏幕空间,现有的应用程序将显示在顶部和底部的黑色空间的视图框中。
幸运的是,苹果公司增加了一种方法来将安全区域布局指南暴露给CSS。他们添加了一个类似于CSS变量的概念,称为CSS常量。想像这些像系统设置的CSS变量,不能被覆盖。它们可以通过CSS中的constant()函数来访问,该函数已被提交给CSS工作组进行标准化。
四个布局指南常量是:
苹果给我们的最后的礼物是这些变量也被兼容到到UIWebView。
CSS常量示例
比如你有一个固定的头部导航条,你在iOS 10的CSS就像这样:
header {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 44px;
padding-top: 20px; /* Status bar height */
}
要是iPhone X或者iOS 11设备可以自动调整,你可以将viewport-fit=cover添加到meta标签中,并在CSS中引入常量:
header {
/* ... */
/* Status bar height on iOS 10 */
padding-top: 20px;
/* Status bar height on iOS 11+ */
padding-top: constant(safe-area-inset-top);
}
对于不理解constant()语法的旧设备使用后备值。你也可以在CSS calc()表达式中使用常量。
您还需要记住为底部导航栏执行此操作。
总结
以上所述是小编给大家介绍的iOS 11中webview的视口,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# ios11
# webview
# iOS开发中WebView的基本使用方法简介
# IOS中UIWebView加载Loading的实现方法
# IOS中的webView加载HTML
# 详解iOS webview加载时序和缓存问题总结
# iOS Webview自适应实际内容高度的4种方法详解
# ios开发加载webview显示进度条实例
# iOS 对当前webView进行截屏的方法
# iOS获取cell中webview的内容尺寸
# iOS去除Webview键盘顶部工具栏的方法
# 状态栏
# 应用程序
# 的是
# 如果你
# 标题栏
# 有一个
# 就像
# 将会
# 当你
# 适用于
# 给我们
# 这也
# 苹果公司
# 小编
# 早起
# 导航条
# 也会
# 你可以
# 尤其是
# 这意味着
相关文章:
官网网站制作腾讯审核要多久,联想路由器newifi官网
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
定制建站哪家更专业可靠?推荐榜单揭晓
英语简历制作免费网站推荐,如何将简历翻译成英文?
建站之星如何实现五合一智能建站与营销推广?
红河网站制作公司,红河事业单位身份证如何上传?
如何制作算命网站,怎么注册算命网站?
建站之星代理如何优化在线客服效率?
c# 在高并发下使用反射发射(Reflection.Emit)的性能
济南企业网站制作公司,济南社保单位网上缴费步骤?
高端建站如何打造兼具美学与转化的品牌官网?
上海网站制作网站建设公司,建筑电工证网上查询系统入口?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
如何在Golang中使用replace替换模块_指定本地或远程路径
建站主机选择指南:服务器配置与SEO优化实战技巧
如何快速生成高效建站系统源代码?
如何在阿里云虚拟服务器快速搭建网站?
如何在阿里云域名上完成建站全流程?
武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?
潍坊网站制作公司有哪些,潍坊哪家招聘网站好?
如何基于PHP生成高效IDC网络公司建站源码?
建站为何优先选择香港服务器?
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
如何通过WDCP绑定主域名及创建子域名站点?
娃派WAP自助建站:免费模板+移动优化,快速打造专业网站
javascript基本数据类型及类型检测常用方法小结
深圳网站制作的公司有哪些,dido官方网站?
建站之星价格显示格式升级,你的预算足够吗?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
外贸公司网站制作哪家好,maersk船公司官网?
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
建站主机选哪家性价比最高?
子杰智能建站系统|零代码开发与AI生成SEO优化指南
广平建站公司哪家专业可靠?如何选择?
实现虚拟支付需哪些建站技术支撑?
为什么Go需要go mod文件_Go go mod文件作用说明
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
如何彻底卸载建站之星软件?
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
如何通过商城免费建站系统源码自定义网站主题?
如何快速搭建高效简练网站?
南京网站制作费用,南京远驱官方网站?
宁波免费建站如何选择可靠模板与平台?
网站制作公司排行榜,四大门户网站排名?
如何在云服务器上快速搭建个人网站?
,南京靠谱的征婚网站?
如何获取上海专业网站定制建站电话?
*请认真填写需求信息,我们会在24小时内与您取得联系。