2016-07-26 2 views
0

У меня есть UIWebview и внутри его scrollView. Я добавил несколько подзонов, для аргументов ради, скажем, я разместился в середине экрана на портрете, когда я поворачиваю свой экран на пейзаж, я хочу, чтобы мое подвью оставалось в этом фиксированном положении, поэтому, если он находится посередине экрана, он должен оставаться посередине экрана при повороте.Swift - подпункт остается в том же положении при повороте

У меня есть это:

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

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

До сих пор подвиды, ширина и высота остались прежними. Мне просто нужно выяснить, как рассчитывать, поэтому UIViews останется той же позицией внутри 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

ScrollView внутри webView является внутренним для webView. Добавление подпрограмм к нему - неподдерживаемое поведение. Единственная причина, она подвергается воздействию как общественной собственности because:

Ваше приложение может получить доступ вид прокрутки, если он хочет, чтобы настроить прокрутки поведение веб-просмотра.

Если вы хотите, чтобы подзаголовок имел фиксированное положение w.r.t. webView, а затем добавить оба к тому же супервину и установить ограничения между ними.