2016-11-26 72 views
0

我在滚动视图中有几个标签。每个标签都是一个“页面”。但抵消是不正确的。我找不到问题。UIScrollView错误偏移量

我的代码:

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个标签。

有人知道解决方案吗?

回答

1

你的代码适合我。

请注意,由于自动布局,scrollView的大小可以在viewDidLoad之后更改。一个更好的地方来设置你的scrollView将被覆盖viewDidLayoutSubviews。 scrollView的大小将在那时建立。但要小心,因为viewDidLayoutSubviews会运行多次,所以请确保您只设置了一次scrollView。


这不是你的错误,但是你的contentSize.width太大了。您不需要将1添加到quantity,因为在scrollView内容区域中确切地有quantity标签。

scrView.contentSize.width = width * CGFloat(quantity) 

此外,雨燕不需要;在线路的两端,所以删除这些。