我从 UIView 创建了一个非常简单的自定义类。顶部有一个 UIScrollView。在 UIScrollView 内部,我放置了几个按钮。按钮位置超出 ScrollView 。
这是代码。
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()
那么按钮位置是正确的,如下所示。
我不明白为什么。请帮忙。谢谢!
最佳答案
这是因为 UIScrollView
本身只能滚动容器 View 。您需要做的是像最初一样初始化一个 UIScrollView
,但不是将所有组件添加到 ScrollView ,而是创建一个名为 conatinerView
新的 UIView
code>,将所有tabView
更改为containerView
,然后将required init
更改为:
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.addSubview(tabView)
tabView.addSubview(containerView)
}
但请确保 containerView
的帧大小正确,原点也是正确的。
关于ios - UIButton 在 ScrollView 位置意外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31899408/