ios - UIButton 在 ScrollView 位置意外

标签 ios swift uiscrollview

我从 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)
        }
    }
}

这是我调试 View 层次结构时的样子。 enter image description here

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

var tabView: UIView = UIView()

那么按钮位置是正确的,如下所示。

enter image description here

我不明白为什么。请帮忙。谢谢!

最佳答案

这是因为 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/

相关文章:

ios - 用于图像 Objective C (iOS) 的 ScrollView

ios - 如何在 Xcode 中实现图像数组?

IOS - 使用自动布局和 drawRect

ios - 从 Xcode 6.3 : contains invalid version of Swift 上传的存档的 iTunes Connect 错误

ios - 如何将相机/照片库中的图像保存到要在 UICollectionView 中显示的数组中

ios - 打印标签时没有出现相机预览

swift - 为什么常量约束结构实例的属性而不是类实例的属性?

ios - 当 ScrollView 移动时,Xamarin UIScrollView GestureRecognizerShouldBegin 报告速度为 0

ios - WKWebViewJavascriptBridge 的 Xcode 链接器错误

ios - 如何将 JKAutoShrinkView 或 GTScrollNavigationBar 与 Storyboard一起使用