我为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
}
我在每个单元格的顶部和右侧都有一个奇怪的边框/阴影(故事板中设置的背景颜色)......
请注意,即使我取出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)
}
什么是灰色边框/阴影,我该如何摆脱它?非常感谢提前!
答案 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