2017-02-04 6 views
0

すぐに、オーディオ/ビデオのURLがロードされましたが、ビューはサイズ変更されません。ウェブのURLは問題ありません。ウィンドウの変更通知後にwkwebviewのサイズが変更されました

私は元の次元に維持しながらウィンドウを追跡するためにビューを拡大/拡大したいと思います。ビューの制約を追加するためにIBに目を向けるが、喜びはなかった。このオプションは有効になっていませんでした。

だから私はこの線に沿って考えていた - 通知ハンドラを - Objective-Cのたala、ときに、ウィンドウの変更サイズを変更する:

新しい境界の設定がないように動作しません
// Listen for window resizes 
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(WebViewController.windowResized(_:)), name: NSWindowDidEndLiveResizeNotification, object: nil) 

var orig = CGSize(width: 0,height: 0) 
func windowResized(urlObject : NSNotification) { 
    let url = (self.webView.URL) 
    if ((url?.isFileReferenceURL()) != nil) { 
     let track0 = AVURLAsset(URL:url!, options:nil).tracks[0] 
     if track0.mediaType == AVMediaTypeVideo 
     { 
      orig = track0.naturalSize 
      print("original size ",orig) 
      let bounds = webView.window?.contentView!.bounds 
      webView.window?.setContentSize(orig) 
      webView.bounds.size = orig 
     } 
    } 
} 

作業。 NSWindowDidResizeNotification通知が利用できないことに興味がありますか?

多分私はこの間違っているつもりです。

私は、サイズ変更イベントを処理してwebViewのサイズや計画に影響を与える方法があるかどうかを尋ねています。

答えて

0

WKWebViewは、実際にあなたのアプリケーションから別のウィンドウで実行されます。したがって、ウィンドウの通知を受け取ることはできません。だから私は追加するには、私のオリジナルを変更

この投稿は、うまくいけば、右の通知に

How to detect a movie being played in a WKWebView?

+0

私のwebViewは、コントローラーのビューにサブビューとして追加されたコントローラーを表示するivarです。これはosxですが、別のウィンドウインスタンスはありませんが、ポインタに感謝しています。あなたのラインに沿って、私はサブビューを歩いていましたが、それぞれが倍率を許可しますが、まだサイズを変更していません。 – slashlos

0

を得るには正しい方向にあなたを導く可能性が「webView.bounds.size = ORIG」が、その後viewLayoutで修正を追加しました()。

override func viewDidLayout() { 
    super.viewDidLayout() 

    let newSize = webView.bounds.size 
    let aspect = orig.height/orig.width 
    let magnify = newSize.width/orig.width 
    let newHeight = newSize.width * aspect 
    let adjSize = NSMakeSize(newSize.width-1,newHeight-1) 

    webView.setMagnification(magnify, centeredAtPoint: NSMakePoint(adjSize.width/2.0, adjSize.height/2.0)) 
    view.bounds.size = adjSize 
} 

これもコントロールを拡大し、同じWebview内の他のビデオを使用するとレイアウトスキューが発生します。私は近づいていますが、この修正には問題があります。

丸めハック(h/w - 1)は、round()とrint()を使用していたのに対し、私はスクロールバーを避けようとしていました。 Webkitコントロールの拡大などを避ける方法がある場合は、お知らせください、ありがとう!

関連する問題