swift - UIScrollView 偏移量错误

标签 swift uiscrollview

我在一个 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);

    }

左侧的粉红色来自上一个“页面”。

enter image description here

再次注意上一页(第 8 页)左侧的紫色。

enter image description here

第一页看起来不错。但是,数字越大,偏移量越大。我想覆盖 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/

相关文章:

ios - 减速时 UIScrollView 速度为 0

iphone - iOS : UIScrollView and OpenGL

swift - 如何在 Swift 中创建私有(private)函数?

ios - MKMarkerAnnotationView 不显示标注

ios - 如何使 UIScrollView 在 NSLayoutConstraint 中适合其父框架?

ios - 滚动到表格底部时表格跳动

ios - 将 UIScrollView 与 SpriteKit 一起使用时出现随机问题

Swift:促销产品(使用 RevenueCat) - 缓存 defermentBlock

ios - 为什么当从 Alamofire 响应触发代码时 KYDrawerController 不显示?

ios - 小计算器