我从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)
}
}
}
但是,如果我只是将UIScrollView更改为UIView,如下所示,
var tabView: UIView = UIView()
然后按钮位置正确,如下所示。
我无法弄清楚原因。请帮忙。谢谢!
答案 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)
}
的帧大小正确,原点也是正确的。