<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.tiffa.net/w/index.php?action=history&amp;feed=atom&amp;title=AC%2FAssetCollectorApp</id>
	<title>AC/AssetCollectorApp - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.tiffa.net/w/index.php?action=history&amp;feed=atom&amp;title=AC%2FAssetCollectorApp"/>
	<link rel="alternate" type="text/html" href="https://wiki.tiffa.net/w/index.php?title=AC/AssetCollectorApp&amp;action=history"/>
	<updated>2026-04-14T05:37:32Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.tiffa.net/w/index.php?title=AC/AssetCollectorApp&amp;diff=2150&amp;oldid=prev</id>
		<title>imported&gt;Fire at 07:46, 12 November 2022</title>
		<link rel="alternate" type="text/html" href="https://wiki.tiffa.net/w/index.php?title=AC/AssetCollectorApp&amp;diff=2150&amp;oldid=prev"/>
		<updated>2022-11-12T07:46:57Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;アプリのエントリーポイントの構造体。&lt;br /&gt;
&lt;br /&gt;
== 説明 ==&lt;br /&gt;
;L.1&lt;br /&gt;
:[[Swift/Attributes/@main|@main]] は、以下に続く、[[Swift/Type/struct|struct]], [[Swift/Type/class|class]], [[Swift/Type/enum|enum]] がプログラムのエントリーポイントになる&lt;br /&gt;
;L.2&lt;br /&gt;
:[[SwiftUI/Protocol/App|Appプロトコル]] で、アプリの動作を指定（SwiftUI お決まり呪文)&lt;br /&gt;
;L.3&lt;br /&gt;
:画面モード(light, dark, 端末の設定に合わせる) を使用するためappearanceModeを定義。[[Swift/Class/UserDefaults|UserDefaults]]に書き込むため [[SwiftUI/PropertyWrapper/@AppStorage|@AppStorage]]を使用&lt;br /&gt;
;L.7&lt;br /&gt;
:iOS 15になってから、ナビゲーションバーとタブバーが透過設定されるようになってしまったので、[[Swift/availability condition]]を使用して分岐をかける。&lt;br /&gt;
;L.8~18&lt;br /&gt;
:ナビゲーションバーとタブバーの非透過設定を実施。&lt;br /&gt;
;L.22&lt;br /&gt;
:こちらもSwiftUI お決まり文。bodyを定義 [[SwiftUI/Protocol/Scene|Sceneプロトコル]]を使う。someを入れることで、コンパイル時に最適化されるらしい。&lt;br /&gt;
;L.23&lt;br /&gt;
:Scene内の[[SwiftUI/Structure/WindowGroup|WindowGroup]]を設定複数[[SwiftUI/Protocol/View|View]]を含めることもできる。&lt;br /&gt;
;L.24&lt;br /&gt;
:スプラッシュ画面用View のBounce()を呼び出し&lt;br /&gt;
;L.26&lt;br /&gt;
:ダークモード設定を直接指定する場合は、L.25 の [[SwiftUI/ViewConfiguration/preferredColorScheme|preferredColorScheme]]を使用すればいいのだが、今回UserDefaultsに保管した設定を呼び出して設定したかったので、Extension でViewを拡張。[https://qiita.com/MaShunzhe/items/e0b5cab0df689438379f こちら]のページの内容で実装。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Swift&amp;quot; line&amp;gt;&lt;br /&gt;
@main&lt;br /&gt;
struct AssetCollectorApp: App {&lt;br /&gt;
    @AppStorage(wrappedValue: 0, &amp;quot;appearanceMode&amp;quot;) var appearanceMode&lt;br /&gt;
    &lt;br /&gt;
    init() {&lt;br /&gt;
        // ナビゲーションバーとタブバーが透過設定されるのを防ぐ&lt;br /&gt;
        if #available(iOS 15.0, *) {&lt;br /&gt;
            // disable UINavigation bar transparent&lt;br /&gt;
            let navigationBarAppearance = UINavigationBarAppearance()&lt;br /&gt;
            navigationBarAppearance.configureWithDefaultBackground()&lt;br /&gt;
            UINavigationBar.appearance().standardAppearance = navigationBarAppearance&lt;br /&gt;
            UINavigationBar.appearance().compactAppearance = navigationBarAppearance&lt;br /&gt;
            UINavigationBar.appearance().scrollEdgeAppearance = navigationBarAppearance&lt;br /&gt;
            &lt;br /&gt;
            let tabBarAppearance = UITabBarAppearance()&lt;br /&gt;
            tabBarAppearance.configureWithDefaultBackground()&lt;br /&gt;
            UITabBar.appearance().standardAppearance = tabBarAppearance&lt;br /&gt;
            UITabBar.appearance().scrollEdgeAppearance = tabBarAppearance&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    var body: some Scene {&lt;br /&gt;
        WindowGroup {&lt;br /&gt;
            Bounce()&lt;br /&gt;
                //.preferredColorScheme(.light)&lt;br /&gt;
                .applyAppearenceSetting(DarkModeSetting(rawValue: self.appearanceMode) ?? .followSystem)&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:AssetCollector|AssetCollectorApp]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Fire</name></author>
	</entry>
</feed>