私はストーリーボードとデフォルトの画像セットを含むフレームワークを持っています。 フレームワークは複数のアプリに含めることができ、アプリケーションは必要に応じて、デフォルトの画像のいずれか、一部、またはすべてを独自のバリアントでオーバーライドできます。フレームワーク内にあるストーリーボードの画像をオーバーライドする方法
私が直面している問題は、すべてのシナリオでうまくいくソリューションを見つけられなかったことです。 フレームワークにPersonというイメージが含まれていて、フレームワークがアプリケーションA
をフレームワークコードを使用して画像を設定した場合等:その後人の独自のバージョンを提供しない人、およびフレームワークは、アプリケーションBで使用されそして
let image = UIImage.init(named: "Person")
someImageView.image = image
アプリAが実行されたとき、その人物画像の変形が見つかって正しく表示されます。 (アプリケーションAには、その資産カタログにPersonの亜種があります) しかし、アプリBを実行すると何も表示されません。
一方、コードを使用してイメージを設定しないと(ストーリーボードイメージビューのXcodeの属性インスペクタで設定されている)、アプリケーションBを実行するとデフォルトのフレームワークイメージが正しく表示されますappAのカスタムPersonイメージは表示されません。
私が正常にこれらの3つのシナリオカバーできる方法があります:デフォルトの画像は、フレームワークであるともない、アプリAやアプリのB が自分のカスタムイメージ
- は、 にあり、フレームワークとアプリAはそれをオーバーライドしたいがアプリBはオーバーライドしたくない。
- デフォルトの画像はフレームワークにあり、アプリAとアプリBの両方が に変更したい場合は、独自のバリアントで上書きします。
(私は、フレームワークに数十の画像を含む大きなストーリーボードを持っています。できるだけコードを含まないソリューションが大好きです。つまり、デフォルト画像名はXcodeの属性インスペクタで設定されています。画像が自動的に表示され、画像が自動的に表示されます)