【发布时间】:2016-01-08 23:12:40
【问题描述】:
如何在 UICollectionView 中获得一个像素完美的一 (1) 像素和边框线(例如制作月历)。问题是细胞相交的地方,它们的边界相交,所以它实际上是 2 个像素(不是 1 个像素)。
因此,这是一个与 CollectionView 布局相关的问题/问题。随着每个单元格放置自己的 1 像素边框的方式上升,当所有单元格以零间距相遇时,整体看起来像 2 像素边框(collectionView 的外边缘除外,它将是 1 像素)
寻求使用什么方法/代码来解决这个问题。
这是我使用的自定义 UICollectionViewCell 类,我在这里使用 drawrect 在单元格上设置了边框。
import UIKit
class GCCalendarCell: UICollectionViewCell {
@IBOutlet weak var title : UITextField!
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override init(frame: CGRect) {
super.init(frame: frame)
}
override func drawRect(rect: CGRect) {
self.layer.borderWidth = 1
self.layer.borderColor = UIColor.redColor().CGColor
}
}
【问题讨论】:
-
您是否尝试将
borderWidth设置为0.5? -
0.5 高度依赖于屏幕密度。这应该适用于 Retina 屏幕 (@2x),但不适用于 Retina HD 屏幕 (@3x)。
-
你可以像这里描述的那样创建装饰视图:stackoverflow.com/a/15796502/2035054
-
侧节点:我建议在 init 方法中而不是在
-drawRect:中分配图层的边框颜色和宽度。如果没有进行自定义绘图,则不覆盖-drawRect:会更有效,并且会导致每次绘制视图时都会冗余地分配这些属性。 -
@IgorPalaguta 谢谢 - 这是我一直在寻找的潜在客户类型 - 理想情况下,希望有一种方法可以让你开箱即用地更容易做到这一点,但如果不仅仅是为了学习这个跨度>
标签: ios uitableview uiview uicollectionview uicollectionviewlayout