如何在自定义 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: 在单元格边界更改时自动调用。