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
时都要设置contentSize
的UIScrollView
??
你应该仔细阅读本教程raywenderlich.com/122139/uiscrollview-tutorial
Victor :这是为了避免创建一个新变量来保存i
值。好的,我去看看教程,谢谢
contentSize
应该只分配一次,而不是像上面代码中那样每次都分配一次
【参考方案1】:
设置内容大小:
scrollContainer.contentSize = CGSize(width:10000, height:50)
【讨论】:
如果您将width
设置为10000
,它当然会水平滚动,但这需要根据UIScrollView
中UIView
s 的数量正确计算,而不是以这种方式手动设置
好吧,我要试试这个,但为什么我必须放 50 而不是我的内容视图的高度(谁是 100)
那不行,我总是可以垂直移动我的单元格,而且它没有居中。以上是关于UIScrollView contentSize 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
UITableView/UIScrollView 如何自动知道 ContentSize 何时发生变化?
为啥我没有得到 UIScrollView 的实际 contentSize?
KVO - UIScrollView.contentSize误报?