滚动视图位置中的 UIButton 意外
Posted
技术标签:
【中文标题】滚动视图位置中的 UIButton 意外【英文标题】:UIButton in scrollView position unexpected 【发布时间】:2015-08-08 23:00:41 【问题描述】:我从 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()
那么按钮位置是正确的,如下所示。
我不知道为什么。请帮忙。谢谢!
【问题讨论】:
【参考方案1】:这是因为UIScrollView
本身只能滚动容器视图。您需要做的是像最初一样初始化UIScrollView
,但不是将所有组件添加到滚动视图,而是创建一个名为conatinerView
的新UIView
,将所有tabView
更改为containerView
,然后将required init
更改为:
required init(coder aDecoder: NSCoder)
super.init(coder: aDecoder)
self.addSubview(tabView)
tabView.addSubview(containerView)
但请确保containerView
的帧大小正确,原点也是正确的。
【讨论】:
对不起,这不是原因。我发现了问题。视图控制器嵌入在导航控制器中。默认情况下,选择“调整滚动视图昆虫”。如果我取消选择此选项,原始代码将起作用。感谢您的帮助。以上是关于滚动视图位置中的 UIButton 意外的主要内容,如果未能解决你的问题,请参考以下文章