🐙
【SwiftUI】if文を使ってOSによってViewを変更する方法
SwiftUIでOSによってViewを変更する方法です。
macOSのアプリって難しそうと感じている人やiOSはもちろんmacOSにも対応したアプリを作りたい人はこれでmacOSのBuildも簡単に体験できますので是非触ってみて下さい!
-iPadによる表示
-macによる表示
-Code
var body: some View {
NavigationView{
#if os(iOS)
content
.navigationTitle("hogehoge大学")
#else
content
.frame(minWidth: 200, idealWidth: 250, maxWidth: 300)
#endif
HogehogeView()
}
}
contentView
var content: some View {
List {
NavigationLink(destination: HogehogeView()){
Label("コース選択", systemImage: "book.closed")
}
Label("カリキュラム日程", systemImage: "list.bullet.rectangle")
Label("動画学習", systemImage: "tv")
Label("課題一覧", systemImage: "mail.stack")
Label("ゼミ検索", systemImage: "magnifyingglass")
}
.listStyle(SidebarListStyle())
}
-解説
if文を使ってOSの違いを判別し、それぞれにViewを変更しています。
#if os(iOS)ではそのままcontentの通り表示させ、タイトルを”hogehoge大学”としていますがもしOSが違った場合はcontent(ここではサイドバーのフレームの大きさを定義しています).frame(minWidth: 200, idealWidth: 250, maxWidth: 300)でViewを変更させています。
つまり実装に必要なcodeは
#if os(iOS)
#else
#endif
のみで実装できます!これなら簡単にmacOSverも作りやすそうなので今後挑戦していこうかと思います!
-補足
今回はif文をOSによる変更を実装しましたが、Viewごと変更したい場合はstruct直下に@ViewBuilderが必要ですのでご注意を!
Discussion