Swift - UIScrollView不滚动

Moh*_*din 33 uiscrollview ios swift xcode6

我的UIScrollView不会向下滚动.我不知道为什么.我已经关注了有关此问题的Apple文档.

@IBOutlet weak var scroller: UIScrollView!

    override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.

}

override func viewDidLayoutSubviews() {
    scroller.scrollEnabled = true
    // Do any additional setup after loading the view
    scroller.contentSize = CGSizeMake(400, 2300)
}
Run Code Online (Sandbox Code Playgroud)

请指教.谢谢.

Chr*_*örz 42

你需要设置frame你的UIScrollView,使它小于contentsize.否则,它不会滚动.

此外,我建议您添加scroller.contentSize = CGSizeMake(400, 2300)到您的viewDidLoad方法.

  • Swift 3:`scroller.contentSize = CGSize(width:yourWidth,height:yourHeight)` (12认同)

小智 21

很多时候代码是正确的,如果你已经按照教程,但许多初学者不知道是scrollView不会正常滚动模拟器.只有当您按下鼠标垫并同时滚动时才会滚动.许多有经验的XCode/Swift/Obj-C用户非常习惯这样做,所以他们不知道初学者可能会忽视它.再见 :-)

@IBOutlet weak var scrollView: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(scrollView)
// Do any additional setup after the view
}

override func viewWillLayoutSubviews(){
super.viewWillLayoutSubviews()
scrollView.contentSize = CGSize(width: 375, height: 800)
}
Run Code Online (Sandbox Code Playgroud)

只要您执行我上面所说的操作,此代码就可以正常工作

  • viewWillLayoutSubviews() 对我有用,谢谢 (2认同)

Fan*_*ing 10

Swift 3.0版

scroller.contentSize = CGSize(width: scroller.contentSize.width, height: 2000)
Run Code Online (Sandbox Code Playgroud)


sat*_*esh 8

如果您使用自动版式,

viewdidAppear中设置内容大小适合我的。

覆盖func viewDidAppear(_动画:布尔){

    scrollView.contentSize = CGSize(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height+300)

}
Run Code Online (Sandbox Code Playgroud)


小智 8

如果您正在使用Storyboard

  1. 将您的内容视图放入UIScrollView
  2. 使用滚动视图添加topbottomleft和约束right
  3. 添加等式heightswidths约束
  4. 对于垂直滚动,将Equal Heights Constraint优先级设置为250。对于水平滚动,将Equal Widths Constraint优先级设置为250


小智 5

如果使用自动布局,则contentSize属性将停止工作,它将尝试从约束条件推断出内容大小。如果真是这样,那么您的问题可能是您没有为内容视图定义必要的约束,以便滚动视图可以推断内容的大小。您应该在滚动视图的顶部和底部边缘定义内容视图的约束。


Zap*_*ndr 5

就我而言,我在 UIScrollView 中使用了 UIStackView。

添加了一些从代码到 stackview 的视图元素。它不会滚动。

通过将 stackview 设置为userInteractionEnabled来修复它false


She*_*nde 5

不要给滚动视图固定高度,而总是将第一个子视图的顶部赋予scrollview,将最后一个子视图的底部赋予scrollview。通过这种方式,滚动视图将根据所包含子视图的大小自动增长。无需为滚动视图提供contentSize,无论大小iPhone均可使用。