我在一个 ScrollView 中有几个标签。每个标签都是一个“页面”。但是偏移量不对。我找不到问题所在。
我的代码:
let quantity = 10;
var width : CGFloat = 0.0;
override func viewDidLoad() {
super.viewDidLoad()
width = self.scrView.frame.width;
for i in 0..<quantity {
let xPos = width * CGFloat(i);
let label = UILabel(frame: CGRect(x: xPos, y: 0, width: width, height: self.scrView.frame.height))
label.textAlignment = .center
label.font = UIFont(name: "Helvetica Neue", size: 50)
label.textColor = UIColor.white
label.text = "\(i + 1)"
label.backgroundColor = .randomColor()
scrView.addSubview(label);
}
scrView.contentSize.width = width * CGFloat(quantity + 1);
}
左侧的粉红色来自上一个“页面”。
再次注意上一页(第 8 页)左侧的紫色。
第一页看起来不错。但是,数字越大,偏移量越大。我想覆盖 1 个标签的整个可见区域。
有人知道解决方案吗?
最佳答案
您的代码对我来说工作正常。
请注意,由于 Auto Layout,在 viewDidLoad
之后,scrollView 的大小可能会发生变化。设置 scrollView 的更好位置是重写 viewDidLayoutSubviews
。 scrollView 的大小将在那时确定。但要小心,因为 viewDidLayoutSubviews
会运行多次,所以确保只设置一次 scrollView。
这不是你的错误,而是你的 contentSize.width
太大了。您不需要将 1
添加到 quantity
,因为在您的 scrollView 内容区域中确实有 quantity
标签。
scrView.contentSize.width = width * CGFloat(quantity)
此外,Swift 不需要行尾的 ;
,所以删除它们。
关于swift - UIScrollView 偏移量错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40819928/