SFSafariViewController 在导航栏和底部工具栏中是不是始终具有相同的 UI 元素?

Posted

技术标签:

【中文标题】SFSafariViewController 在导航栏和底部工具栏中是不是始终具有相同的 UI 元素?【英文标题】:Will SFSafariViewController always have the same UI elements in the navigation bar and the bottom toolbar?SFSafariViewController 在导航栏和底部工具栏中是否始终具有相同的 UI 元素? 【发布时间】:2020-01-10 20:45:55 【问题描述】:

我有一个使用 SFSafariViewController 的应用程序。用户单击一个按钮,应用程序内会出现一个 web 视图,显示网站的内容。我正在使用 XCUITest 框架来测试 UI。

我注意到当 webview 出现时,导航栏和底部工具栏似乎总是有相同的 UI 元素。

导航栏 UI 元素(从左到右):

    “完成”按钮 网址链接 重新加载按钮

底部工具栏 UI 元素(从左到右):

    后退箭头按钮 前进箭头按钮 分享按钮 在 Safari 中打开按钮

从 UI 测试的角度来看,我是否可以假设这些 UI 元素将始终作为 SFSafari VC 的默认值存在?

【问题讨论】:

【参考方案1】:

您可以在此处查看 SFSafariViewController 的完整配置:https://developer.apple.com/documentation/safariservices/sfsafariviewcontroller/dismissbuttonstyle。据我所知,以下是开箱即用的配置:

    左上角的“完成”按钮可以更改为不同的外观(DoneCloseCancel 是选项):https://developer.apple.com/documentation/safariservices/sfsafariviewcontroller/dismissbuttonstyle

    您可以使用barCollapsingEnabled 属性使顶部导航栏“可折叠”。 https://developer.apple.com/documentation/safariservices/sfsafariviewcontroller/configuration/2887469-barcollapsingenabled

    您可以更改barcontrols(按钮)的首选色调。

除此之外,SFSafariViewController 几乎没有可用于自定义的选项。

所以你的问题的答案是:不,你不能假设这些元素会一直存在。但是,在大多数情况下它们会存在。总的来说,我不会假设任何事情,因为 Apple 总是可以在未来的 ios 版本中更改它。

【讨论】:

以上是关于SFSafariViewController 在导航栏和底部工具栏中是不是始终具有相同的 UI 元素?的主要内容,如果未能解决你的问题,请参考以下文章

使用 SFSafariViewController 的主要优势是啥?

如何在 SwiftUI 中使用 SFSafariViewController?

SFSafariViewController 显示任何 URL 的空白屏幕

SFSafariViewController 关闭后的背景音频

__init__.py在导包中起到的作用

检测 SFSafariViewController 中的 URL 更改