記錄學習內容。
主要是看網路上的文章和影片,做些紀錄。
內容可能有錯誤。
ContentView是實作View(一個protocol) , ViewController 是繼承class UIViewController
參考:
https://developer.apple.com/documentation/swiftui/view
https://developer.apple.com/documentation/uikit/uiviewcontroller
教學來源
The Complete Guide to NavigationView in SwiftUI
整理
1 在NavigationLink 裡面放圖片,圖片可能會變得跟原本不一樣。
所以要變成
Image("image").renderingMode(.original)
2
要怎麼在ContentView 跟ContentView之間傳資料 ?
自己創建另一個View ,然後另一個View裡放變數 -- > 直接參數給值
像是: AnotherView(apple)
3
用布林值,來判斷要不要 轉畫面。
或者也可以用字串(tag)判斷多個頁面的跳轉 。
4
navigationBarItem 可以擺上方的功能選項(標題列)
可以用trailing 放最右邊 , leading 放最左邊 ,
然後如果 要兩個最右邊 , 就在trailing 裡面放 HStack
5
講了@ObservedObject 和@EnvironmentObject 和@Published 。
這部份看這部教學:
iOS 13 SwiftUI Tutorial: Interactively Transition and Share Data between Views with SwiftUI
6
可以在AppDelegate.swift修改標題列:
1 標題文字的顏色、字形
2 標題列背景顏色
7
然後講了一個問題,在iPhone 11 Pro Max
會有旋轉後,畫面變奇怪的問題。
解決方法(不懂原因) :加這個在NavigationView:
.navigationViewStyle(StackNavigationViewStyle())
畫面還是怪怪的,像是標題列已經改成綠色了。但是旋轉後又變回白色。(目前不知道解決方法)
二的解答 參考
SwiftUI double navigation bar
只要在 第一個畫面 放{NavigationView} 就可以了。
因為換到另一個畫面是在{原本的NavigationView裡換東西} , 如果這東西裡面 又有一個NavigationView ,就會疊加NavigationView 。
8
之後講了WatchOS的畫面問題:
,不過xcode上面只有ios 、 tvOS 、 macOS 。
沒看到WatchOS 。
9
接著講了MacOS的問題 ,感覺有點難,先跳過
其他問題:
.navigationBarHidden(true)只會隱藏標題文字,
如果想要的隱藏全部的NavigationView 的標題列:
How to hide NavigationView Bar in SwiftUI
.navigationBarHidden(true)
.navigationBarTitle(Text(""))
.edgesIgnoringSafeArea([.top, .bottom])
10
SwiftUI iOS开发 中文入门教学 - 编程导航方式 - isActive p.16