【问题标题】:How to remove uicollectionview top padding swift 4 iOS 11?如何删除 uicollectionview 顶部填充 swift 4 iOS 11?
【发布时间】:2018-08-06 10:47:44
【问题描述】:

我从堆栈溢出中尝试了很多答案。但我没有得到 iOS 11 的相关答案。你可以注意到我在 UICollectionview 的顶部有空间。请帮我解决这个问题。

ScreenShort:

我尝试了什么:

1) self.automaticallyAdjustsScrollViewInsets = false

iOS 11 已弃用此功能

2) Uncheck "Adjust Scroll View insets"

3)This link

【问题讨论】:

  • 您好!这是通过情节提要完成的还是以编程方式完成的?
  • self.automaticallyAdjustsScrollViewInsets = falseself.contentInsetAdjustmentBehavior = .never 替换为 iOS 11 试试这个
  • @AlexL.Rocha 使用情节提要完成。
  • @AntonFilimonov 仍然没有删除空间

标签: ios swift uicollectionview


【解决方案1】:

automaticallyAdjustsScrollViewInsets 在 iOS 11 中已弃用。请尝试为 iOS 11 设置 contentInsetAdjustmentBehavior

if #available(iOS 11.0, *) {
        collectionView.contentInsetAdjustmentBehavior = .never
    } else {
        self.automaticallyAdjustsScrollViewInsets = false
    }

【讨论】:

  • 在 viewWillAppear 方法中添加了这个条件,但它没有从顶部删除空间。
  • @TusharLathiya 能否请您在 viewDidLoad 中添加此代码?
  • @TusharLathiya 你在 viewDidLayoutSubviews 中试过了吗?
【解决方案2】:

尝试在您的viewDidLoad 中添加edgesForExtendedLayout = []

还有;

if #available(iOS 11.0, *) {
        collectionView.contentInsetAdjustmentBehavior = .never
    } else {
        self.automaticallyAdjustsScrollViewInsets = false
    }

【讨论】:

    【解决方案3】:

    我在 Xcode 11 中遇到了同样的问题。这是我的解决方案:

    【讨论】:

      【解决方案4】:

      好吧

      间距问题可能主要是因为您在 UIView 中有 collectionView。顺便说一句,您应该只使用 1 个集合视图,并且您只需要 1 个视图控制器。

      1.

      只要把collection view放到第一个VC里面,把UIView换成collectionView就行了。

      2.

      然后只需将另一个原型可重用单元格拖到集合视图中。您可以在情节提要的一个集合视图中拥有多个自定义单元格!将单元格 1 设为您的第一个自定义集合视图单元格类型,将单元格 2 设为您的第二个。当segment bar切换时,只使用一个函数来改变collectionView在重新加载collectionView时呈现的数据,你可以在UICollectionViewDatasource方法中改变collectionView呈现的单元格类型和数组。

      类似的事情:

      enum MediaTypes {
        case pictures
        case videos
       }
      
      fileprivate var arrayToPresent: MediaTypes = .pictures
      
      ...
      
      func segmentChanged(){
       switch self.segmentController.selectedIndex {
          case 1:
           self.arrayToPresent = .videos
      
          default:
           self.arrayToPresent = .pictures
        }
      
        //Logic to reload Collection View
      }   
      
      func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
       switch self.arrayToPresent {
        case .pictures:
          let cell = collectionView.deq... as! PictureCollectionViewCell
           return cell
      
        case .videos:
          let cell = collectionView.deq... as! VideoCollectionViewCell
           return cell
        }
      }
      

      【讨论】:

      • 所有约束都是 0。没有得到确切的问题。