我有一个UIScrollView
在界面生成器中创建了一堆UITextView
和UIImageView
对象已经添加。我已将它连接到IBOutlet
,并在-(void)viewDidLoad
下将其内容大小设置为1200x2000
。用户交互已启用,多点触控,滚动已启用并显示垂直和水平滚动指示都设置为YES
。当我在iOS模拟器中启动应用程序时,它不会滚动。什么可能是这种行为的原因?UIScrollView不滚动?
回答
viewDidLoad即将推出。您必须等到视图布局发生之后。尝试在viewDidAppear中设置contentSize。
您使用的是自动布局?如果是这样,请查看以下答案(并忘记1.): UIScrollView doesn't use autolayout constraints。
我尝试了第一个,但没有帮助。我检查了另一个答案,并写了这个非常快速的代码来实现它:' - (void)viewDidLoad { //在加载视图后执行任何其他设置。 _mainScrollView.contentSize = CGSizeMake(4000,4000);对于(int i = 0; i <_mainScrollView.subviews.count; i ++){ UIView * newSubview = [_ mainScrollView.subviews objectAtIndex:i]; newSubview.translatesAutoresizingMaskIntoConstraints = NO; } [super viewDidLoad]; }' – 68cherries
@Nenad M:为什么忘记第一?纯自动布局方法似乎仍然需要设置'contentSize'。也许如果你采取混合的方式,你不需要这样做,但我还没有尝试过。 – testing
@timquinn:什么是秘密?一个秘密似乎是[这个答案](http://stackoverflow.com/a/16029013/426227)。 – testing
我知道如何解决这个问题,而不是诉诸编写代码的最佳方式是,这一切都可以在故事板内完成,这里是如何:启用
- 离开自动布局。
- 制作一个通用的UIView UIScrollView的子视图。 2.1)把所有的视图组件放在这个通用的UIView中。
- 在子视图和UIScrollView之间进行自动布局约束。您必须将最后一个子视图的右侧和/或底部固定在UIScrollView的右侧和/或底部。这就是UIScrollView知道内容大小的方式。
非常感谢你!这是我发现在iOS 7环境中使用UIScrollView与Autolayout一起工作的唯一方法!!!!!!! :) 竖起大拇指! –
viewDidLoad
确实为时过早,但viewDidAppear:animated
也许不够迟。设置contentOffset
的理想场所在viewDidLayoutSubviews
之内。
如果您使用自动布局,确保你把代码中
viewDidLayoutSubviews
我使用自定义视图的UIScrollView的设置内容大小,拉刷新功能,滚动视图不滚动。我尝试设置contentSize
与AutoLayout
,并尝试通过代码设置它。滚动视图仍然无法滚动。
花费3〜4小时后,我通过contentInset
来解决。它会告诉滚动视图为滚动添加一些额外的空间。
override func viewDidLayoutSubviews() {
// Add extra 15pt on the `top` of scrollView.
//self.scrollView.contentInset = UIEdgeInsetsMake(15, 0, 0, 0)
// Add extra 2pt on the `bottom` of scrollView, let it be scrollable. And the UI is more beautiful in my case.
self.scrollView.contentInset = UIEdgeInsetsMake(0, 0, 2, 0)
}
参考文档:
- 1. UIScrollview不滚动
- 2. UIScrollView不滚动...
- 3. UIScrollVIew不滚动
- 4. UIScrollView不滚动
- 5. UIScrollView不滚动
- 6. UIScrollView不滚动
- 7. UIScrollView不滚动滚动RubyMotion
- 8. UIScrollView不滚动iOS
- 9. UIScrollview不滚动iOS
- 10. uiscrollview不滚动uiimageview
- 11. UIScrollView不滚动ios6
- 12. Objective-C UIScrollView不滚动
- 13. UIScrollView不滚动到最后?
- 14. UIScrollView不滚动Swift 3
- 15. UIScrollView不会滚动(Storyboards)
- 16. UIScrollView:滚动不起作用
- 17. UIScrollView不滚动屏幕?
- 18. UIScrollView不滚动平滑?
- 19. UIScrollview不能平滑滚动
- 20. UIScrollView:什么都不滚动
- 21. 另一个UIScrollView不滚动
- 22. UIScrollView不滚动模态,Swift
- 23. UIScrollView不滚动在iPAD
- 24. UITableView头UIScrollView不滚动
- 25. UIScrollView在iOS11中不滚动
- 26. uiview中的uiscrollview不滚动
- 27. UIScrollView在UIViewController不滚动
- 28. UIScrollView不会完全滚动
- 29. iPhone SDK:的UIScrollView不滚动
- 30. UIScrollView不滚动使用uiview
发布的初始化代码? –
没有任何初始化代码,我相信UIScrollView是由IB自动初始化的。我所做的代码明智的做法是设置scrollView的contentSize属性 – 68cherries
重写并检查UIScrollView委托方法,以检查UIScrollView实际上是否获取触摸事件或某个其他视图实际上是吃掉所有事件..g scrollViewWillBeginDragging: – Dinesh