SwiftでUIKitのCellにSwiftUIのViewを配置した時にはまった事

Swift Swift
Swift

SwiftでUIKitを中心に構築されている画面を、SwiftUIのViewに置き換えている中で、
UITableViewCellの中身だけをSwiftUIに変更したかったので、置き換えを行ったが、中々解決できなかった問題が発生したのでメモ_φ(・_・

発生していた現象

セルにSwiftUIを配置するには、UIHostingConfigurationを使用した方が良さそうだったので、
UIHostingConfigurationを使用してSwiftUIのViewを配置するようにしました。

その時に、上下左右に余白がある事に気づきました。
この余白が何をやっても中々解決出来なかったのですが、解決出来たので、その方法のメモです。

解決方法

非常に簡単です。

var configuration = UIHostingConfiguration {
            customSwiftUIView()
        }.margins(.all, 0)

.margins(.all, 0)
を指定するだけで、余白が解消されます。

締め

余白が発生するため、色々試していました。
UIHostingControllerを使用してSwiftUIのViewを構築したりしました。
その際には、NSLayoutConstraintでレイアウトの制約を設定する事で、余白は解決しました。

しかし、UIHostingConfigurationの方が新しい?のか、セルに使用するにはこちらの方が適しているようです。
確かに、UIHostingControllerでセル内にSwiftUIを配置しただけでは、メモリが凄く消費されました・・・
これは上下にスクロールできるようなレイアウトを構築していたのですが、上下にスクロールする事でセルが表示される度にメモリに残り続けている感じがします。

セル内に配置するのに合わせて、適切にメモリ管理を行えば良いのでしょうが、UIHostingConfigurationだとメモリが適切に管理されてそうなくらい、メモリが溜まり続ける事もなかったので、UIHostingConfigurationを使う方が簡単だと思いました。

思わぬところで時間を取られました(^_^;)

コメント

タイトルとURLをコピーしました