UBSutton在scrollView位置意外

时间:2015-08-08 23:00:42

标签: ios swift uiscrollview

我从UIView创建了一个非常简单的自定义类。在顶部有一个UIScrollView。在UIScrollView中,我放了几个按钮。按钮位置不在滚动视图中。

这是代码。

class TestView: UIView {

    var tabView: UIScrollView = UIScrollView()
    var buttons = [UIButton]()
    var tabHeight: CGFloat = 40.0
    let screenWidth: CGFloat = UIScreen.mainScreen().bounds.width
    var titles = [String]()
    var numberOfTitles = 0

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        self.addSubview(tabView)
    }

    func createUI() {
        tabView.frame = CGRect(x: 0, y: 0, width: screenWidth, height: tabHeight)
        tabView.backgroundColor = UIColor.grayColor()
        tabView.contentSize = CGSize(width: screenWidth, height: tabHeight)

        numberOfTitles = titles.count

        for var i = 0; i < numberOfTitles; ++i {
            var button = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton
            button.frame = CGRect(x: 50.0*CGFloat(i), y: 0, width: 50.0, height: tabHeight)
            button.setTitle(titles[i], forState: UIControlState.Normal)
            button.setTitleColor(UIColor.blackColor(), forState: UIControlState.Normal)
            tabView.addSubview(button)
        }
    }
}

以下是调试视图Hierarchy时的外观。 enter image description here

但是,如果我只是将UIScrollView更改为UIView,如下所示,

var tabView: UIView = UIView()

然后按钮位置正确,如下所示。

enter image description here

我无法弄清楚原因。请帮忙。谢谢!

1 个答案:

答案 0 :(得分:0)

这是因为UIScrollView本身只能滚动容器视图。您需要做的是像最初一样初始化UIScrollView,但不是将所有组件添加到滚动视图,而是创建一个名为UIView的新conatinerView,更改所有{{1}转到tabView,然后将containerView更改为:

required init

但请确保required init(coder aDecoder: NSCoder) { super.init(coder: aDecoder) self.addSubview(tabView) tabView.addSubview(containerView) } 的帧大小正确,原点也是正确的。