2016-07-26 15 views
0

私はUIWebviewを持っていて、scrollView内に複数のサブビューを追加しました。議論のために、画面を真ん中に置いて、画面を回転するとランドスケープでは、サブビューをその固定位置にとどめておきたいので、画面の中央にある場合は、回転させると画面の中央に残るはずです。スウィフト - 回転時に同じ位置に残るサブビュー

私はこのている:

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) { 

     for views in webview.scrollView.subviews 
     { 
      views.frame = CGRectMake(?, ?, views.frame.width, views.frame.height) 
     } 
} 

これまでサブビュー、幅と高さは同じまま。私は、UIViewがscrollView内の同じ位置のままになるように計算する方法を理解する必要があります。誰にも全くアイデアはありますか?

UPDATE

私は、サブビューを追加した後、以下を試してみました:

let widthConstraint = NSLayoutConstraint(item: stampView, attribute: .Width, relatedBy: .Equal, 
                toItem: nil, attribute: .NotAnAttribute, multiplier: 1.0, constant: 250) 

      let heightConstraint = NSLayoutConstraint(item: stampView, attribute: .Height, relatedBy: .Equal, 
                 toItem: nil, attribute: .NotAnAttribute, multiplier: 1.0, constant: 100) 

      let xConstraint = NSLayoutConstraint(item: stampView, attribute: .CenterX, relatedBy: .Equal, toItem: self.webview.scrollView, attribute: .CenterX, multiplier: 1, constant: 0) 

      let yConstraint = NSLayoutConstraint(item: stampView, attribute: .CenterY, relatedBy: .Equal, toItem: self.webview.scrollView, attribute: .CenterY, multiplier: 1, constant: 0) 

      NSLayoutConstraint.activateConstraints([widthConstraint, heightConstraint, xConstraint, yConstraint]) 

すべてがサブビューが固定位置にありませんが、同じまま。

私はまた、次のことを試してみました:

let widthConstraint = NSLayoutConstraint(item: stampView, attribute: .Width, relatedBy: .Equal, 
                toItem: nil, attribute: .NotAnAttribute, multiplier: 1.0, constant: 250) 
      stampView.addConstraint(widthConstraint) 

      let heightConstraint = NSLayoutConstraint(item: stampView, attribute: .Height, relatedBy: .Equal, 
                 toItem: nil, attribute: .NotAnAttribute, multiplier: 1.0, constant: 100) 
      stampView.addConstraint(heightConstraint) 

      let xConstraint = NSLayoutConstraint(item: stampView, attribute: .CenterX, relatedBy: .Equal, toItem: self.webview.scrollView, attribute: .CenterX, multiplier: 1, constant: 0) 

      let yConstraint = NSLayoutConstraint(item: stampView, attribute: .CenterY, relatedBy: .Equal, toItem: self.webview.scrollView, attribute: .CenterY, multiplier: 1, constant: 0) 

      self.webview.scrollView.addConstraint(xConstraint) 
      self.webview.scrollView.addConstraint(yConstraint) 

はまだ動作しませんでした。

+0

これを達成するために制約を使用できますか?コンテナの制約の中で水平方向と垂直方向のような中心 –

+0

プログラムでサブビューを追加するので、プログラムで制約を行うことができます – user979331

+1

はい、http://stackoverflow.com/questions/27624133/programmatically-add-centerx-centery-constraints https:// developer.apple.com/library/prerelease/content/documentation/UserExperience/Conceptual/AutolayoutPG/ProgrammaticallyCreatingConstraints.html –

答えて

0

webView内のscrollViewは、WebViewの内部にあります。サブビューを追加することはサポートされていません。それは公共の財産として公開された唯一の理由はbecauseです:それは、Webビューの スクロール動作をカスタマイズしたい場合

アプリは、スクロールビューにアクセスすることができます。

サブビューに固定位置w.r.tを設定する場合は、 WebViewを開き、同じスーパービューに両方を追加し、2つのセットアップの間で制約を設定します。

関連する問題