A.M*_*zer 5 ios nslayoutconstraint swift wkwebview
我成功地WKWebView以编程方式添加了一个 In a viewController(in viewDidLoad())。当加载包含视频的网址时,它看起来很好,但是当我尝试点击它(播放它)时,我看不到它,但音频工作正常。
奇怪的是,我创建了一个新项目只是为了确保它能正常工作,而且确实如此,我复制了与 webView 显示视频相同的代码。
在转换为 Swift 3 之前它运行良好。
这是点击视频时的样子:
敲击前:
点击后:
我还尝试了另一个网页:
敲击前:
点击后(请注意,状态栏现在已隐藏):
简单来说,就是这样的代码:
override func viewDidLoad() {
super.viewDidLoad()
let web = WKWebView(frame: view.frame)
let urlRequest = URLRequest(url: URL(string: "http://www.w3schools.com/html/html5_video.asp")!)
web.frame = view.frame
web.load(urlRequest)
view.addSubview(web)
}
Run Code Online (Sandbox Code Playgroud)
我尝试检查很多情况,但没有任何输出。我缺少什么?
提前致谢。
初始化webview时,需要传入两个配置属性。例子:
let webConfiguration = WKWebViewConfiguration()
webConfiguration.allowsInlineMediaPlayback = true
webConfiguration.mediaTypesRequiringUserActionForPlayback = []
webView = WKWebView(frame: .zero, configuration: webConfiguration)
Run Code Online (Sandbox Code Playgroud)
您还需要允许 info.plist 中的任意加载:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoadsForMedia</key>
<true/>
</dict>
Run Code Online (Sandbox Code Playgroud)
我认为视频正在您的 WKWebview 后面播放,您可以调试视图层次结构并将其发布吗?Xcode->Menu->Debug->View Debugging->Capture View Hierarchy播放视频时。
我尝试过一个新的 swift3 项目和您的代码,没有问题,这里是视图层次结构:
你可以从左侧面板中看到,AVPlayerView位于另一个UIWindow中,与WKWebView不同,所以我猜你的项目中包含WKWebView的UIWindow具有更高的windowLevel,因此它显示在包含AVPlayer的UIWindow之上。
通过将默认的 UIWindow 设置为更高的 WindowLevel(UIWindowLevelAlert),我重现了您在项目中看到的内容。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
window?.windowLevel = UIWindowLevelAlert
return true
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6812 次 |
| 最近记录: |