滚动视图不水平滚动
Posted
技术标签:
【中文标题】滚动视图不水平滚动【英文标题】:scroll view not scrolling horizontally 【发布时间】:2016-05-18 16:48:48 【问题描述】:我是 ios 编程新手,我正在尝试将分段控制器添加到滚动视图,因为分段控制器对于屏幕来说太大而滚动视图无法水平滚动。我不知道为什么它不滚动。我想我错过了一些小东西,但我找不到它。有什么帮助!谢谢!
我在 viewDidLoad 中的代码:
scrollView.delegate = self
scrollView.showsHorizontalScrollIndicator = true
self.scrollView.alwaysBounceHorizontal = true
self.scrollView.scrollEnabled = true
self.scrollView.addSubview(segControl)
self.scrollView.pagingEnabled = true
self.scrollView.directionalLockEnabled = false
self.scrollView.contentSize.height = segControl.frame.height
self.scrollView.contentSize.width = segControl.frame.width
【问题讨论】:
segControl.frame.width
的值是多少?是否大于scrollView.frame.width
?
scrollView.contentSize 应该大于 scrollview.frame 才能使其滚动。
是的,我 99% 肯定是的。如果不是,我怎么能做到这一点?或者我怎样才能检查它是否是?
【参考方案1】:
UIScrollView
很容易使用:只要它的contentSize
比它自己的frame.size
大,它就会让您滚动以显示其可见区域之外的子视图。
可能检查segControl.frame.width
和scrollView.frame.width
值:segControl
的宽度应该更大,以便滚动视图滚动。
还值得检查scrollView.frame
是否正确并且没有位于屏幕之外的某个地方:例如scrollView.frame.origin.x + scrollView.frame.width
小于屏幕宽度。
查看屏幕截图,scrollView.contentSize.width
应该超过320
(因为它占据了模拟器屏幕的整个宽度,在您的情况下是 iPhone 5/5S)。由于您已指定内容宽度输出为216
,因此您似乎正在访问错误回调中的帧,该回调在尚未正确设置值时触发。我可以建议移动
scrollView.contentSize.height = segControl.frame.height
scrollView.contentSize.width = segControl.frame.width
部分到viewWillAppear()
而不是viewDidLoad()
。
【讨论】:
我做了,它更大。我打印了它,这是在调试区域出现的。滚动视图框架宽度:0.0 内容大小:216.0scrollView.frame
怎么样?它可以吗,而且不会出现在屏幕上吗?
我的滚动视图尾随和前导约束等于超级视图。所以我不这么认为。
内容大小是 216,但这个等式 scrollView.frame.origin.x + scrollView.frame.width 的答案是 300。这是什么意思?
它向左滑动,但我认为这只是反弹。它实际上并没有滚动以显示更多的 seg 控件。以上是关于滚动视图不水平滚动的主要内容,如果未能解决你的问题,请参考以下文章