【问题标题】:CollectionView in ScrollViewScrollView 中的 CollectionView
【发布时间】:2017-02-12 12:59:01
【问题描述】:

我正在开发一个 iOS 应用程序,我想在底部显示一个 UIScrollView 和两个 UILabels 一个 UIImageView 和一个 UICollectionView。现在我不知道如何在自动布局中做到这一点,谁能帮帮我?

我尝试过添加所有内容并相互设置约束,但我确实记得UIScrollView 需要计算内在内容高度。如何创建此滚动视图?

【问题讨论】:

  • 确保您的滚动视图从上到下有一个连接的视图链。如果您将最顶部项目的间距设置为滚动视图的顶部,将最低项目的间距设置为底部,在中间项目之间设置间距,并且所有项目都具有指定的高度,iOS 将能够计算您的滚动视图的大小。
  • 我还建议你添加一个容器视图来保存你的滚动视图的全部内容。这使得在所有设备上将滚动限制为仅垂直变得很容易。见:stackoverflow.com/a/28048228/1630618
  • 好的,但是如果我设置我的collectionView.height = 200,这意味着我看不到低于200点的项目,对吧?
  • collectionView 是 scrollView 的子类,它通过滚动来显示其内容。让 collectionView 滚动就足够了,还是你真的想将它包含在一个 scrollView 中并让你的标签滚动到屏幕外?
  • 我实际上想将标签滚动到屏幕外

标签: ios iphone swift uiscrollview interface-builder


【解决方案1】:

在这种情况下,我会避免将 UICollectionView 嵌入到 UIScrollView 中。使用UICollectionReusableView 子类将UILabels 和UIImageView 添加到节标题中会更容易。

步骤如下:

  1. UICollectionView 中添加节标题:

  1. 通过子类化UICollectionReusableView 创建节标题视图类。设置头部可重用视图的自定义类和重用标识符:

  1. 布置标题视图。连接您的插座。
  2. 实现viewForSupplementaryElementOfKind 方法。

    override func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
    
        // If you also use footers:
        // use a switch statement on the 'kind' argument to
        // decide which view to dequeue.
    
        let view = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "Header", for: indexPath)
    
        // set up your header view
    
        return view
    }
    

【讨论】:

    猜你喜欢
    • 2020-12-11
    • 2023-03-22
    • 2020-08-25
    • 2017-11-11
    • 2018-10-19
    • 1970-01-01
    • 2016-03-29
    • 1970-01-01
    • 2013-03-03
    相关资源
    最近更新 更多