iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 4
0
Mobile Development

iOS學習資源與筆記系列 第 9

SwiftUI, ContentView 換畫面-- >NavigationView

  • 分享至 

  • xImage
  •  

記錄學習內容。
主要是看網路上的文章和影片,做些紀錄。
內容可能有錯誤。

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())

遇到的問題:

一 加了.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


上一篇
SwiftUI 畫面練習
下一篇
Swift Closures
系列文
iOS學習資源與筆記28
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言