UIScrollView contentSize 不起作用

Posted

技术标签:

【中文标题】UIScrollView contentSize 不起作用【英文标题】:UIScrollView contentSize doesn't work 【发布时间】:2017-03-28 21:40:44 【问题描述】:

我的 UIScollView 垂直滚动有问题。我只想让我的 ScollView 水平滚动。我尝试更改 contentSize,但没有成功。

我使用约束,这段代码:

var plugeeNews : [Plugs]?

var topNewsScrollView : UIScrollView = 
        var scrollView = UIScrollView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 75))
        scrollView.isPagingEnabled = true
        scrollView.showsHorizontalScrollIndicator = false
        scrollView.showsVerticalScrollIndicator = false
        scrollView.backgroundColor = .gray
        scrollView.isDirectionalLockEnabled = true
        scrollView.translatesAutoresizingMaskIntoConstraints = false
        return scrollView
    ()


func setupViewInTopNewsScrollView() 
        for i in 0..<plugeeNews.count 
            let xPosition = screenSize.width * CGFloat(i)
            let myView = TopNewsCell(frame: CGRect(x: xPosition, y: 0, width: screenSize.width , height: heightOfNewsCell))
            myView.label.text = plugeeNews[i]
            myView.randomBackgroundColor(number: i)
            topNewsScrollView.contentSize = CGSize(width: topNewsScrollView.frame.width * CGFloat(i + 1),height:  heightOfNewsCell)
            topNewsScrollView.addSubview(myView)
        
    

这是我的 UIScrollView 的高度限制:

...
        topNewsScrollView.heightAnchor.constraint(equalToConstant: heightOfNewsCell).isActive = true

结果如下:

而且我不希望 UIScollView 上的白色/灰色视图下方的灰色视图,我只想在我的视图之间水平滑动。

【问题讨论】:

为什么每次添加新的UIView 时都要设置contentSizeUIScrollView?? 你应该仔细阅读本教程raywenderlich.com/122139/uiscrollview-tutorial Victor :这是为了避免创建一个新变量来保存i 值。好的,我去看看教程,谢谢 contentSize 应该只分配一次,而不是像上面代码中那样每次都分配一次 【参考方案1】:

设置内容大小:

scrollContainer.contentSize = CGSize(width:10000, height:50)

【讨论】:

如果您将width 设置为10000,它当然会水平滚动,但这需要根据UIScrollViewUIViews 的数量正确计算,而不是以这种方式手动设置 好吧,我要试试这个,但为什么我必须放 50 而不是我的内容视图的高度(谁是 100) 那不行,我总是可以垂直移动我的单元格,而且它没有居中。

以上是关于UIScrollView contentSize 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

UITableView/UIScrollView 如何自动知道 ContentSize 何时发生变化?

为啥我没有得到 UIScrollView 的实际 contentSize?

KVO - UIScrollView.contentSize误报?

UIScrollView contentSize 不起作用

无法在 WKWebView 中更改 UIScrollview 的 contentSize

UIScrollView ContentSize 未按预期运行