UICollectionViewCell上的奇怪边框 - 斯威夫特

时间:2015-12-13 10:53:06

标签: ios swift swift2 uicollectionviewcell

我为UICollectionViewCell创建了一个子类,看起来像这样......

import Foundation
import UIKit
class GroupCollectionViewCell: UICollectionViewCell {
    @IBOutlet weak var name: UILabel!
    @IBOutlet weak var subject: UILabel!
}

一旦我覆盖了drawRect函数,就像这样...

override func drawRect(rect: CGRect) {
    self.layer.cornerRadius = 4
}

我在每个单元格的顶部和右侧都有一个奇怪的边框/阴影(故事板中设置的背景颜色)......

Border on top and right of each cell

请注意,即使我取出self.layer.cornerRadius行,边框仍会出现,所以我可能错过了drawRect函数 - 我只是不确定是什么。

这使得这个特别奇怪的是,当我在iPhone 6+或更宽的设备上运行代码时,问题就会消失。

唯一的其他(可能是)相关代码,是我用来在视图控制器中适当调整单元格大小的代码:

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
    let size = collectionView.frame.width
    return CGSize(width: (size/3)-8, height: (size/3)-8)
}

什么是灰色边框/阴影,我该如何摆脱它?非常感谢提前!

2 个答案:

答案 0 :(得分:1)

我怀疑这可能只是一个实施的怪癖,因为你并没有按照Apple想要的方式做事。除非您重新定级UIView,否则应使用自己的super.drawRect()方法调用drawRect()。此外,drawRect()并不是设置cornerRadius的正确位置:您应该设置一次,也就是在创建单元格时,然后忘记它。

您可能会发现Apple's reference for UIView and drawRect有用:

  

如果直接子类化UIView,则此方法的实现不需要调用super。但是,如果要为不同的视图类创建子类,则应在实现中的某个时刻调用super。

还有一件事:如果你可以避免覆盖drawRect()你应该;它确实会对性能产生影响。

答案 1 :(得分:1)

我只能建议做一点点黑客攻击: 将此行添加到drawRect

        self.layer.borderWidth = 1
        self.layer.borderColor = COLOR_OF_GRPUP_CELL