Swift – UIScrollView不滚动

我的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) } 

请指教。 谢谢。

您需要设置UIScrollView的大小,使其小于contentsize。 否则它不会滚动。

另外,我建议将scroller.contentSize = CGSizeMake(400, 2300)viewDidLoad方法中。

很多时候代码是正确的,如果你已经按照教程,但许多初学者不知道是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) } 

只要你按照我上面的说法操作,这段代码就可以正常工作

Swift 3.0版

 scroller.contentSize = CGSize(width: scroller.contentSize.width, height: 2000) 

如果您使用的是autolayout,那么contentSize属性将停止工作,它将尝试根据约束推断内容大小。 如果是这种情况,那么您的问题可能是您没有为内容视图定义必要的约束,以便scrollview可以推断内容大小。 您应该将内容视图的约束定义到scrollview的顶部和底部边缘。

我不知道这是一个很好的解决方案,但您可以尝试将headerview设置为清空UITableView。

 let scrollView: UIView = UIView(frame: CGRectMake(0, 0, 400, 2300)) tableView.tableHeaderView = scrollView 

由于您的代码非常完美,因此视图可能似乎没有向下移动有两个原因。

  • 第一个原因,你没有看到滚动指示器
  • 第二个原因,在视图中没有任何显示

第二个原因还不足以说你的视图不是滚动但是如果你没有看到滚动指示器,那么你可能会认为视图实际上并没有滚动。

我在故事板中未设置约束时发生的第一个原因,特别是如果故事板中的视图控制器大小设置为“任何”。 滚动视图将比模拟或真实设备的屏幕宽,因此滚动指示器将在可见屏幕之外。

我遇到了这个问题,在我解决之前找不到答案。 我在普通视图中有一个滚动视图,只要我用“滚动视图”替换“视图”,它就会滚动得很好。 只是因为任何人绊倒了。

我不确定那是否意味着阻止它工作,因为我很缺乏经验,但它似乎是我的解决方案。 希望它可以帮到某人。