🔘
SwiftUI.Menuは、UIButtonである
ここに、2つのUIコンポーネントであるButtonとMenuがあります。
struct ContentView: View {
var body: some View {
VStack {
Button(action: {}, label: {
Text("Button")
})
Menu(content: {}, label: {
Text("Menu")
})
}
}
}
見た目こそ同じではありますが、実はその構造に大きな違いがあります。
まずは、drawingGroup()
を使って、VStackのレンダリングをまとめてみましょう。
すると、Menuのレンダリングが出来なくなってしまいました。
drawingGroup()
のドキュメントによると、
Views backed by native platform views may not render into the image. Instead, they log a warning and display a placeholder image to highlight the error.
と書かれています。MenuはSwiftUIの標準コンポーネントであるはずですが、native platform viewsということなのでしょうか?
そこで、Xcode view hierarchy debuggerを覗いてみると…
UIButtonが現れました。つまり、SwiftUI.Menu
はUIButton
を使って実装されたViewであることがわかりました。
これのせいで少し不都合があるのですが、その話は別の機会に…
Discussion