xyk blog

最近は iOS 開発の記事が多めです。

IBDesignable を使ったカスタムビューがリアルタイムプレビューに反映されない

検証環境:
Xcode 11.4
Swift 5.2

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

関連

xyk.hatenablog.com