Swift中带有CollectionView的网格布局

我希望实现这一目标:

四处搜索,我发现可能的方法是使用UICollectionView,因此没有问题,因为有很多关于堆栈溢出的教程和问题。我有3个问题:

  1. 我找不到任何关于“分隔符”(分隔所有盒子的线)的信息。我喜欢它不会水平触摸屏幕边框。它是以编程方式完成的吗

  2. 为了在所有设备中平均分配空间(3个框/按钮水平),我找到了这个答案。这是正确的方法吗

  3. 对于模糊效果,我找到了以下答案:如何在UITableView中使用自适应分段实现UIVisualEffectView

对于表视图,它将是:

如果(!UIAccessibilityReducetTransparencyEnabled()){
tableView.backgroundColor=UIColor.clearColor()
让blurEffect=UIBlurEffect(样式:。灯光)
让blurEffectView=UIVisualEffectView(效果:blurEffect)
tableView.backgroundView=blurEffectView
}

我可以这样做吗

@IBOutlet var collectionView:UICollectionView!
如果(!UIAccessibilityReducetTransparencyEnabled()){
collectionView.backgroundColor=UIColor.clearColor()
让blurEffect=UIBlurEffect(样式:。灯光)
让blurEffectView=UIVisualEffectView(效果:blurEffect)
collectionView.backgroundView=blurEffectView
}

在一个文件中像这样创建UICollectionViewController,该文件包含来自UICollectionViewController的子类:

方便覆盖初始化(){
变量布局:UICollectionViewFlowLayout=UICollectionViewFlowLayout()
layout.itemSize=CGSizeMake(<宽度>,<高度>)
//设置单元格之间的间距
layout.minimumInteritemSpacing=<列间距>
layout.minimumLineSpacing=<行间距>
返回(self.init(collectionViewLayout:layout))
}

viewDidLoad中,您可以如下设置背景色:

self.collectionView.backgroundColor=UIColor.orangeColor()

我猜你可以这样设置背景图像:

self.collectionView?.backgroundColor=UIColor(patternImage:UIImage(名为:“image.png”)!)

您发现的模糊效果看起来不错。不过,我很难弄清楚它是如何工作的。可能使用backgroundView属性进行设置

如果我找到答案,我会更新

更新:

下面是一个可能用于模糊细胞的想法

创建一个cocoa touch类,该类包含来自UICollectionViewCell的子类,然后将此代码添加到其中:

方便覆盖初始化(帧:CGRect){
self.init(frame:frame)
变量模糊效果:UIVisualEffect
blurEffect=UIBlurEffect(样式:。灯光)
var visualEffectView:UIVisualEffectView
visualEffectView=UIVisualEffectView(效果:模糊效果)
visualEffectView.frame=self.maskView
self.addSubview(visualEffectView)
}
覆盖func布局子视图(){
super.layoutSubviews()
self.maskView!.frame=self.contentView.bounds
}

然后在CollectionViewController文件中的viewDidLoad中,更改这一行代码:

self.collectionView!。registerClass(UICollectionViewCell.self,forCellWithReuseIdentifier:reuseIdentifier)

UICollectionViewCell.self更改为<CollectionViewCell文件的名称>。自我

发表评论