У меня есть 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)
до сих пор не работает.
Можете ли вы просто использовать ограничения для этого? как центр горизонтально и вертикально в ограничениях контейнера –
может делать программные ограничения, потому что я добавляю подпрограммы программно – user979331
да, вы можете http://stackoverflow.com/questions/27624133/programmatically-add-centerx-centery-constraints https: // developer.apple.com/library/prerelease/content/documentation/UserExperience/Conceptual/AutolayoutPG/ProgrammaticallyCreatingConstraints.html –