33

构建 iPad App 时,如何在 UICollectionViewCell 周围绘制边框?

更多细节:我实现了一个扩展 UICollectionViewCell 的类 ProductCell。现在,我想指定一些花哨的细节,例如边框、阴影等。然而,当在这里尝试使用类似的东西时,Xcode 告诉我接收器类型“CALayer”是一个前向声明。

4

5 回答 5

76

只是为了更多的实现:

#import <QuartzCore/QuartzCore.h>

在你的.m

确保你的类实现

- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath; 

因为这是设置单元的地方。

然后您可以更改cell.layer.background(仅在石英导入后可用)

见下文

- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    MyCollectionViewCell *cell = [cv dequeueReusableCellWithReuseIdentifier:@"pressieCell" forIndexPath:indexPath];
    //other cell setup here

    cell.layer.borderWidth=1.0f;
    cell.layer.borderColor=[UIColor blueColor].CGColor;

    return cell;
}
于 2013-06-06T13:15:52.953 回答
24

迅速

为 Swift 3 更新

假设您使用所需的方法设置了 Collection View,您只需编写几行代码即可添加边框。

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath as IndexPath) as! MyCollectionViewCell
    cell.myLabel.text = self.items[indexPath.item]
    cell.backgroundColor = UIColor.cyan 
    
    // add a border
    cell.layer.borderColor = UIColor.black.cgColor
    cell.layer.borderWidth = 1
    cell.layer.cornerRadius = 8 // optional
    
    return cell
}

笔记

  • QuartzCore如果您已经导入了UIKit.
  • 如果您还想添加阴影,请查看此答案
于 2015-10-29T08:20:24.457 回答
7

您需要包含框架QuartzCore并将标头导入您的类:

#import <QuartzCore/QuartzCore.h>
于 2012-10-29T12:16:09.323 回答
2

斯威夫特 4

cell.layer.borderColor = UIColor.black.cgColor
cell.layer.borderWidth = 1

创建单元格后,将其添加到数据源方法中

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CollectionViewCell", for: indexPath)
     cell.layer.borderColor = UIColor.black.cgColor
     cell.layer.borderWidth = 1
}
于 2018-08-10T05:06:04.360 回答
0

我认为最好 将此配置添加到您的自定义单元实现中,而不是在数据源委托方法中。

cell.layer.borderColor = UIColor.black.cgColor
cell.layer.borderWidth = 1
cell.layer.cornerRadius = 8 // optional
于 2020-01-03T07:42:52.700 回答