【问题标题】:Nest a UIScrollView in Swift在 Swift 中嵌套 UIScrollView
【发布时间】:2018-10-11 15:03:01
【问题描述】:

我有一个图像数组的滚动视图,它适用于图像左右滚动,但我不能向下滚动,而是能够滚动我的表格视图单元格...我需要能够向下滚动并且我的图像数组没有固定在视图上,有什么办法吗?

我使用的代码是:

    override func viewDidLoad() {
    super.viewDidLoad()
    scrollView.frame = view.frame
    imageArray = [UIImage(named:"adsImage3")!,UIImage(named:"adsImage2")!,UIImage(named:"adsImage")!]
    navigationController?.navigationBar.barTintColor = UIColor.white

    for i in 0..<imageArray.count {
        let imageView = UIImageView()
        imageView.contentMode = .scaleAspectFit
        imageView.clipsToBounds = true
        imageView.image = imageArray[i]
        let xPosition = self.view.frame.width * CGFloat(i)
        imageView.frame = CGRect(x: xPosition, y: 0, width: self.scrollView.frame.width, height: 380)

        scrollView.contentSize.width = scrollView.frame.width * CGFloat(i + 1)
        scrollView.addSubview(imageView)
    }

}

至于我的故事板,它看起来像:

如果我将滚动视图放在我的表格视图中,我的代码将是 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 让单元格:MainMenuRowSelectionTableViewCell = self.tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! MainMenuRowSelectionTableViewCell

    var cellColors = ["#FFB3B3","#FFFFFF"]
    cell.contentView.backgroundColor = UIColor(hexString: cellColors[indexPath.row % cellColors.count])

    imageArray = [UIImage(named:"adsImage3")!,UIImage(named:"adsImage2")!,UIImage(named:"adsImage")!]

    for i in 0..<imageArray.count {
        let imageView = UIImageView()
        imageView.contentMode = .scaleAspectFit
        imageView.clipsToBounds = true
        imageView.image = imageArray[i]
    }
    return cell
}

还有我的故事板

这样,我的滚动视图根本不会出现

【问题讨论】:

  • 您可以使用 UICollectionView 以 Grid 格式显示图像,而不是使用 UIScrollView。它将解决滚动问题,并再次以更简单的方式实现您期望的功能。

标签: ios swift uiscrollview


【解决方案1】:

我需要能够向下滚动并且不将我的图像数组固定在视图上

表格视图垂直滚动视图。您应该将图像的水平滚动视图转换为表格视图的标题视图(即其tableHeaderView),并使表格视图占据整个屏幕。现在您可以滚动表格,并将图像的滚动视图向上滚动到屏幕之外。

【讨论】:

  • 我已经完成了,但是在 cellForRows 中,但它不显示我的滚动视图...它只显示单元格
  • @WilliamLoke 我不知道你现在在做什么。也许您不了解如何调整和配置表格视图的标题视图(即其tableHeaderView 属性)。但这将是一个不同的问题。
【解决方案2】:

是的,这可以做到。嵌套滚动视图的一个很好的参考是 Apple Documentation 那里也有示例代码。

简而言之,您可能需要创建:

  1. UIScrollView 填充视图并可以垂直滚动,
  2. 其中一个UIScrollView 用于图像并且可以水平滚动,并且
  3. 您的UITableView 也位于第一个滚动视图中。

【讨论】:

  • 你的意思是,用滚动视图填满整个视图,然后放一个表格视图并填满滚动视图?
  • 不完全是,一个滚动视图会填满屏幕,另外两个可滚动视图会在其中。请参见上面的屏幕截图。也就是说,我会先尝试@matt 的解决方案。不过,这可能是另一种选择。
猜你喜欢
  • 2010-12-23
  • 2012-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多