【问题标题】:Scroll view not scrolling horizontal滚动视图不水平滚动
【发布时间】:2019-03-18 12:03:58
【问题描述】:

我有一个自定义视图,我在父级中设置它:

func setup(){
    view.backgroundColor = .gray
    view.addSubview(chartView)
    chartView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
    chartView.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
    chartView.topAnchor.constraint(equalTo: view.topAnchor, constant: statusAndNavigationBarHeight).isActive = true
    chartView.heightAnchor.constraint(equalToConstant: Dimensions.chartHeight.value).isActive = true
}

然后在那个视图中我尝试设置一个滚动:

scroll = UIScrollView.init(frame: CGRect(x: 0.0, y: 0.0, width: scrollWidth(), // print 728.0
                                                 height: Double(Dimensions.chartHeight.value))) // print 400.0
    scroll.isScrollEnabled = true
    scroll.showsHorizontalScrollIndicator = true
    addSubview(scroll)
}

仅此而已,当我启动应用程序时,我无法水平拖动和滚动,在调试编辑器中我看不到它是大宽度的滚动视图。

【问题讨论】:

    标签: swift uiscrollview


    【解决方案1】:

    scrollView 不会以它的大小滚动,它需要一个定义它的内容大小的内容,例如

    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.
    
            let chartView = UIView()
            chartView.translatesAutoresizingMaskIntoConstraints = false
            chartView.backgroundColor = .red
            view.backgroundColor = .gray
            view.addSubview(chartView)
            chartView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
            chartView.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
            chartView.topAnchor.constraint(equalTo: view.topAnchor, constant: 100).isActive = true
            chartView.heightAnchor.constraint(equalToConstant:200).isActive = true
            let scroll = UIScrollView(frame: CGRect(x: 0.0,
                y: 0.0,
                width: UIScreen.main.bounds.size.width, // print 728.0
                height: 200.0))
            scroll.isScrollEnabled = true
            scroll.showsHorizontalScrollIndicator = true
            chartView.addSubview(scroll)
            let www = UIView()
            www.backgroundColor = .green
            www.translatesAutoresizingMaskIntoConstraints = false
             scroll.addSubview(www)
            www.leftAnchor.constraint(equalTo: scroll.leftAnchor).isActive = true
            www.rightAnchor.constraint(equalTo: scroll.rightAnchor).isActive = true
            www.topAnchor.constraint(equalTo: scroll.topAnchor).isActive = true
            www.bottomAnchor.constraint(equalTo: scroll.bottomAnchor).isActive = true
            www.heightAnchor.constraint(equalToConstant:200).isActive = true
            www.widthAnchor.constraint(equalTo: view.widthAnchor,multiplier:2.0).isActive = true
            scroll.addSubview(www)
    
        }
    }
    

    【讨论】:

    • 为什么要添加两次视图?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多