我有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)
}
}
到目前为止,子视图,宽度和高度保持不变。我只需要弄清楚如何计算,这样UIViews将保持在scrollView中的相同位置。有没有人有任何想法?
更新
添加子视图后我尝试了以下内容:
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)
self.webview.scrollView.addConstraint(xConstraint)
let yConstraint = NSLayoutConstraint(item: stampView, attribute: .CenterY, relatedBy: .Equal,
toItem: self.webview.scrollView, attribute: .CenterY,
multiplier: 1, constant: 0)
self.webview.scrollView.addConstraint(yConstraint)
仍然无效。
答案 0 :(得分:0)
webView中的scrollView是webView的内部。向其添加子视图是不受支持的行为。它作为公共财产公开的唯一原因是because:
如果想要自定义,您的应用可以访问滚动视图 滚动Web视图的行为。
如果您希望子视图具有固定位置w.r.t. webView,然后将两者都添加到同一个superview,并在两者之间设置约束。