我看到滚动视图的奇怪行为,我试图在设备上水平居中。
我在viewDidLoad()
中设置了一个滚动视图scrollView = UIScrollView()
scrollView.delegate = self
scrollView.minimumZoomScale = 0.
scrollView.maximumZoomScale = 2.0
scrollView.zoomScale = 1.0
scrollView.contentSize = CGSize(width: width, height: height)
我已经为我的内容添加了一个containerView。我在这里改变了背景颜色以试图看到发生了什么
containerView = UIView()
containerView.backgroundColor = .black
scrollView.addSubview(containerView)
view.addSubview(scrollView)
为了测试这个,我决定为containerView设置一个前导常量(我稍后将其置于中心位置)。
containerView.translatesAutoresizingMaskIntoConstraints = false
view.addConstraint(NSLayoutConstraint(item: containerView, attribute: .leading, relatedBy: .equal, toItem: view, attribute: .leading, multiplier: 1, constant: 50))
视图似乎确实向右移动了50。然而 1)我失去了containerView的背景色 2)containerView似乎不再对手势作出反应
我认为我更聪明,而是将约束添加到scrollView中 - 我保留了颜色和手势,但它并没有向右移动。
答案 0 :(得分:1)
scrollView和视图控制器视图之间的约束
NSLayoutConstraint.activate([
scrollView.topAnchor.constraint(equalTo: self.view.topAnchor),
scrollView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
scrollView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
scrollView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor)
])
scrollView和containerView之间的约束
NSLayoutConstraint.activate([
containerView.topAnchor.constraint(equalTo: scrollView.topAnchor),
containerView.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor),
containerView.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor, constant: 50),
containerView.trailingAnchor.constraint(equalTo: scrollView.trailingAnchor)
])
希望是有帮助的!
答案 1 :(得分:0)
我在使用scrollView之前遇到了几乎相同的问题。尝试仅使用CGRect登陆容器,就像使用contentSize一样。在这种情况下,translatesAutoresizingMaskConstraint应为true。