Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IOS Swift在添加子视图时,我在UIView中搞砸了什么_Ios_Swift_Swift3_Uiview_Wkwebview - Fatal编程技术网

IOS Swift在添加子视图时,我在UIView中搞砸了什么

IOS Swift在添加子视图时,我在UIView中搞砸了什么,ios,swift,swift3,uiview,wkwebview,Ios,Swift,Swift3,Uiview,Wkwebview,我有一个UIView并对其设置了约束,如下图所示。当我在模拟器中打开它时,它工作正常。当我尝试添加WKWEBview以显示视频并添加子视图时,问题就出现了。我希望视频采用UIView的尺寸,但视频看起来特别小,UIView看起来缩小了。我怎样才能修正这一点,使视频具有UIView的完整尺寸。正如您可以从设置为trail和leading的约束中看到的,即使视频足够大,视频也不会占用该宽度。我唯一能想到的解决方法就是添加一个 addChildViewController(ViewController

我有一个UIView并对其设置了约束,如下图所示。当我在模拟器中打开它时,它工作正常。当我尝试添加WKWEBview以显示视频并添加子视图时,问题就出现了。我希望视频采用UIView的尺寸,但视频看起来特别小,UIView看起来缩小了。我怎样才能修正这一点,使视频具有UIView的完整尺寸。正如您可以从设置为trail和leading的约束中看到的,即使视频足够大,视频也不会占用该宽度。我唯一能想到的解决方法就是添加一个

addChildViewController(ViewController)

然而,WKWebview没有控制器,任何建议都很好

class ExampleTable: UIViewController, WKUIDelegate {
    @IBOutlet weak var newView: UIView!
    var myWKWEBVIEW: WKWebView?

    override func viewDidLoad() {
        super.viewDidLoad()
         myWKWEBVIEW?.uiDelegate = self
        guard let movieURL = URL(string: "my video url")
            else { return }
        let webConfiguration = WKWebViewConfiguration()
        webConfiguration.allowsInlineMediaPlayback = true
        webConfiguration.mediaTypesRequiringUserActionForPlayback = .audio

        myWKWEBVIEW = WKWebView(frame: newView.frame,configuration: webConfiguration)

        newView.addSubview(myWKWEBVIEW!)

          DispatchQueue.main.async (execute: { () -> Void in
            self.myWKWEBVIEW?.loadHTMLString("<video  height=\"\(self.newView.frame.height)\" width=\"\(self.newView.frame.width)\" muted=\"muted\"  autoplay=\"autoplay\"   src=\"\(movieURL)\" playsinline/>", baseURL: nil)


          })

    }

}
类示例:UIViewController、WKUIDelegate{
@新视图:UIView!
var myWKWEBVIEW:WKWebView?
重写func viewDidLoad(){
super.viewDidLoad()
myWKWEBVIEW?.uiDelegate=self
guard let movieURL=URL(字符串:“我的视频URL”)
else{return}
让webConfiguration=WKWebViewConfiguration()
webConfiguration.allowsInlineMediaPlayback=true
webConfiguration.MediaTypes播放所需的操作=.audio
myWKWEBVIEW=WKWebView(框架:newView.frame,配置:webConfiguration)
添加子视图(myWKWEBVIEW!)
DispatchQueue.main.async(在中执行:{()->Void
self.myWKWEBVIEW?.loadHTMLString(“,baseURL:nil)
})
}
}
我的限制

没有addsubview时的外观

添加子视图以显示视频时的外观


请检查以下代码:

myWKWEBVIEW = WKWebView(frame: CGRect(origin: CGPoint(x:0,y:0), size: newView.frame.size),configuration: webConfiguration)

您在viewDidLoad方法的newView.frame中得到了什么帧?如果您将newView.bounds用作mkWebView的框架,该怎么办?我得到了框架(0.0,59.0,375.0,196.0)。我刚刚使用了newView.bounds,但仍然得到相同的小视频是的,但现在它应该在顶部正确对齐。我不确定它是否有效,但请尝试在loadHTMLString中将宽度和高度值乘以2。如果它适合你的新视图,这意味着你需要将非视网膜屏幕的图像乘以2,将视网膜屏幕的图像乘以3。