如何在自定义 UICollectionView 旋转后触发 drawrect?
how to trigger drawrect after rotation for a custom UICollectionView?
如何在自定义 UICollectionView(具有客户 UICollectionViewCell 和 UICollectionViewLayout)的设备旋转后触发重绘(即调用 drawrect)?
自定义 UICollectionViewCell 的额外功能:
override func drawRect(rect: CGRect) {
let path = UIBezierPath(roundedRect: self.bounds.insetBy(dx: 1, dy: 1), cornerRadius: 50)
path.lineWidth = 3
UIColor.blueColor().setStroke()
path.stroke()
}
轮换前
旋转后(布局已更新,注意标签已移动,但在 drawRect 中绘制的椭圆形并未移动,日志记录显示 "drawRect" 未在旋转时调用)
旋转后需要调用cell.setNeedsDisplay()
。这将导致单元格的 drawRect:
方法再次被触发。
我刚刚发现了一个更简单的解决这个问题的方法。在您的自定义单元格实现中,将 contentMode
属性(在 UIView 上)设置为 Redraw
。这将导致 setNeedsDisplay:
在单元格边界更改时自动调用。
如何在自定义 UICollectionView(具有客户 UICollectionViewCell 和 UICollectionViewLayout)的设备旋转后触发重绘(即调用 drawrect)?
自定义 UICollectionViewCell 的额外功能:
override func drawRect(rect: CGRect) {
let path = UIBezierPath(roundedRect: self.bounds.insetBy(dx: 1, dy: 1), cornerRadius: 50)
path.lineWidth = 3
UIColor.blueColor().setStroke()
path.stroke()
}
轮换前
旋转后(布局已更新,注意标签已移动,但在 drawRect 中绘制的椭圆形并未移动,日志记录显示 "drawRect" 未在旋转时调用)
旋转后需要调用cell.setNeedsDisplay()
。这将导致单元格的 drawRect:
方法再次被触发。
我刚刚发现了一个更简单的解决这个问题的方法。在您的自定义单元格实现中,将 contentMode
属性(在 UIView 上)设置为 Redraw
。这将导致 setNeedsDisplay:
在单元格边界更改时自动调用。