検証環境:
Xcode 11.4
Swift 5.2
IBDesignable を使ったカスタムビューは StoryBoard 上に配置するとリアルタイムでデザインをプレビューすることができる。
しかし、UITableViewCell 上に配置したときはプレビューできるのに UICollectionViewCell 上にカスタムビューを配置したときのみ(UICollectionViewCell や UICollectionReusableView内)、プレビューに反映されないことがあった。
原因はカスタムビューの layoutSubviews
にUIを更新するロジックを書いていたためで、layoutSubviews
はプレビュー時に必ず呼ばれるわけではなかった。(カスタムビューにさらにサブビューを追加するような場合は呼ばれる)
プレビュー時にはprepareForInterfaceBuilder
が必ず呼ばれるので、こちらにUIを更新するロジックを書いておけばよい。