SwiftUI 元件對齊方式

閱讀時間約 4 分鐘

SwiftUI預設元件就是置中顯示,如果要向左/向右/向上/向下對齊怎麼辦呢?

置中

預設置中顯示

預設置中顯示


    var body: some View {
        Text("Hello, World!")
            .background(Color.pink)
    }

向左對齊

向左對齊

向左對齊


HStack + Spacer()

包在一個HStack裡,並且用Spacer推到最左邊

 var body: some View {
        HStack {
            Text("Hello, World!")
                .background(Color.pink)
            Spacer()
        }

    }

調整frame的maxWidth&alignment

   var body: some View {
        Text("Hello, World!")
            .background(Color.pink)
            .frame(maxWidth: .infinity, alignment: .leading)

    }
為何不是將width設成.inifinity?
  • width:確切指定視圖的寬度,並嘗試占據該寬度。當 width 設置為 .infinity 時,視圖將盡可能占據水平空間,但不會影響內容對齊方式。
  • maxWidth:指定視圖的最大寬度,讓視圖可以在水平方向上彈性調整寬度,但不會超過父視圖的寬度。當 maxWidth 設置為 .infinity 時,視圖可以占據任意寬度,但不會超過父視圖的寬度。

在上述情況下,由於將 maxWidth 設置為 .infinity,Text 視圖可以在水平方向上占據任意寬度,同時由於對齊方式設置為 .leading,因此文本將向左對齊顯示。

相較之下,如果僅將 width 設置為 .infinity,視圖將嘗試占據尽可能多的水平空間,但不會影響內容的對齊方式。因此,在這種情況下,無法實現文本內容的左對齊。

向右對齊

向右對齊

向右對齊

同理反過來

HStack + Spacer()

HStack {
Spacer()
       Text("Hello, World!")
         .background(Color.pink)
       }
}

調整frame的maxWidth&alignment

調成trailing

Text("Hello, World!")
     .background(Color.pink)
     .frame(maxWidth: .infinity, alignment: .trailing)


向上對齊

向上對齊

向上對齊


VStack + Spacer()

       VStack {
            Text("Hello, World!")
                .background(Color.pink)
            Spacer()

        }

調整frame的maxHeight和alignment

Text("Hello, World!")
   .background(Color.pink)
.frame(maxHeight: .infinity, alignment: .top)

向下對齊

向下對齊

向下對齊

VStack + Spacer()

VStack {
      Spacer()
      Text("Hello, World!")
       .background(Color.pink)
}

調整frame的maxHeight和alignment

Text("Hello, World!")
            .background(Color.pink)
            .frame(maxHeight: .infinity, alignment: .bottom)


參考資料

我覺得用frame來改比較好,因為效果一樣,不用再多放V/HStack跟Spacer()兩個元件上去只為了排版
雖然用Spacer真的非常直覺,我還寫過一篇文章讚美他XD
沒意外的話這種需求以後我應該還是用frame做

祝大家快樂對齊😎

avatar-img
6會員
35內容數
紀錄iOS開發上遇到的問題或是一些流程筆記。主要都是Swift。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Michelle Chen的沙龍 的其他內容
瞭解如何在Xcode15及以上使用Logger進行更好的程式debug。Logger可以更好的組織Log,但也有一些缺點需要注意。本文將介紹Logger的基本使用方式,以及一些注意事項。
UIEdgeInsets 是一個結構體,用來表示矩形的邊距。它通常在視圖佈局中使用,用於修改視圖的框架(frame)。邊距值可以是正數或負數,這會對矩形的大小產生不同的影響。 UIEdgeInsets 結構體 UIEdgeInsets 結構體包含四個屬性: top:矩形頂部的邊距 left:
iOS15推出了新的按鈕外觀設定功能,讓設定變得更加直觀。使用不同的圓角設定和圖片位置可以輕鬆創建不同風格的按鈕。另外,新的選取效果變化功能也讓按鈕設計更加靈活。本文將介紹這些新功能的使用方法和效果。
本文介紹如何使用UINavigationBarAppearance調整四種場景下的UI外觀,並探討客製化返回鍵UI又保留返回手勢的做法,可以有效地客製化NavigationBar的外觀,並避免一些NG作法。
這篇文章介紹了 Swift 中字串的比較方法,並討論了使用日期字串進行比較的結果。同時也介紹了數字字串、符號字串和表情符號字串的比較原理。最後指出比較日期字串還是要轉成Date才是安全的做法。
最近碰到個神奇的需求,App啟動時,才要用firebase remoteConfig去決定初始畫面。該文章詳細介紹了在App啟動時如何利用firebase remoteConfig去決定初始畫面,以及解決在推播的情況下造成跳轉無效的問題。
瞭解如何在Xcode15及以上使用Logger進行更好的程式debug。Logger可以更好的組織Log,但也有一些缺點需要注意。本文將介紹Logger的基本使用方式,以及一些注意事項。
UIEdgeInsets 是一個結構體,用來表示矩形的邊距。它通常在視圖佈局中使用,用於修改視圖的框架(frame)。邊距值可以是正數或負數,這會對矩形的大小產生不同的影響。 UIEdgeInsets 結構體 UIEdgeInsets 結構體包含四個屬性: top:矩形頂部的邊距 left:
iOS15推出了新的按鈕外觀設定功能,讓設定變得更加直觀。使用不同的圓角設定和圖片位置可以輕鬆創建不同風格的按鈕。另外,新的選取效果變化功能也讓按鈕設計更加靈活。本文將介紹這些新功能的使用方法和效果。
本文介紹如何使用UINavigationBarAppearance調整四種場景下的UI外觀,並探討客製化返回鍵UI又保留返回手勢的做法,可以有效地客製化NavigationBar的外觀,並避免一些NG作法。
這篇文章介紹了 Swift 中字串的比較方法,並討論了使用日期字串進行比較的結果。同時也介紹了數字字串、符號字串和表情符號字串的比較原理。最後指出比較日期字串還是要轉成Date才是安全的做法。
最近碰到個神奇的需求,App啟動時,才要用firebase remoteConfig去決定初始畫面。該文章詳細介紹了在App啟動時如何利用firebase remoteConfig去決定初始畫面,以及解決在推播的情況下造成跳轉無效的問題。
你可能也想看
Google News 追蹤
Thumbnail
Hi 我是 VK~ 在 8 月底寫完〈探索 AI 時代的知識革命:NotebookLM 如何顛覆學習和創作流程?〉後,有機會在 INSIDE POSSIBE 分享兩次「和 NotebookLM 協作如何改變我學習和創作」的主題,剛好最近也有在許多地方聊到關於 NotebookLM 等 AI 工具
Thumbnail
國泰CUBE App 整合外幣換匯、基金、證券等服務,提供簡便、低成本的美股定期定額投資解決方案。 5分鐘開戶、低投資門檻,幫助新手輕鬆進軍國際股市;提供人氣排行榜,讓投資人能夠掌握市場趨勢。
Thumbnail
這是張老師的第三本書,我想前二本應該也有很多朋友們都有讀過,我想絕對是受益良多,而這次在書名上就直接點出,著重在從投資的角度來切入
Thumbnail
需求情境: 一般的看盤軟體,雖然都能針對一籃子自選股票,列出其即時行情和當天漲幅,但若要看「五日漲幅」呢?那就少見了,但這對我很重要。因為小部位的波段性價差交易是個好策略,這時候若能排序好一整排看下來,可以節省大量點來點去的成本,很有價值,所以就來自己刻。 解決方案: 從大處著眼,UI 最外層
Thumbnail
Part.1 搞定基本的 UI 開始開發 iOS App。 首先準備一台 Mac,然後安裝 Xcode,新增專案,系統即刻生成基本的專案結構。coding 的起點在檔案 ContentView.swift: import SwiftUI struct ContentView: View {  
Thumbnail
以時尚設計、工藝美學與表演藝術聞名的V&A博物館正在尋找美國天后泰勒絲(Taylor Swift)的頭號粉絲!
Thumbnail
繼前一陣子 Facebook 的元宇宙浪潮席捲全球,今年微軟旗下的 AI 聊天機器人「ChatGPT」更是引爆話題!不只每個人對未來的生活與市場型態有了不一樣的想像,許多家長和學生們更是開始煩惱,面對今年的 AI 元年,該怎麼提前準備與選擇科系,才能搶先跟上未來趨勢與世界接軌而不被淘汰。 首先
石化原料在護膚產品中使用的情況因產品成分和目的而異,但一般而言,石化原料可能具有一些優點和缺點。 石化原料製作保養品的優點 穩定性: 某些石化原料在護膚產品中可以提供穩定性,這意味著產品的質地和成分在長時間內能夠保持不變。 對皮膚的缺點...
1,抽菸者是否對身體健康有危害? 是,不僅是自身健康危害,也會影響身旁的吸二手菸者,造成肺部傷害 2,不知道煙有沒有辦法透過其他的東西,來讓這些吸菸成癮者可以找到替代的方式,可以提神以及健康,又不會影響身旁周遭的人,造成健康危害
Thumbnail
來到都會區裡的眷村印象~四四南村 四四南村位在台北市信義區101對面 很難想像會有早期的眷村佇立在台北市的都市叢林裡,這裡早期是聯勤第四十四兵工廠由於位在工廠的南邊因而命名。
Thumbnail
由於這次元旦寒流威力太強, 加上要在海拔2700M的高山上野營,  仔細考慮後決定讓蛋花把登山服都穿好穿滿.  當天行進中, 大人小孩都是穿二件排汗衣加上防曬衣外加背心, 遇到風大或走進霧淞森林時看狀況加上防風衣, 晚上在營地會加上羽絨或化纖外套. 我以圖像方式列出蛋花小隊全員當天的服裝穿
Thumbnail
20200106 這次蛋花小隊在超急寒流包圍全台的元旦假期, 出發到平多緃走2天, 其中一天要在海拔2700公呎的高山谷地野營.   出發前一週檢查自己的裝備櫃, 能夠應付這次惡劣天氣的睡眠系統只有2組, 不過還好我們的好朋友探索戶外義氣相挺, 出借公裝賜給我們温暖, 讓我們能安全下山,完成這次
Thumbnail
前晚紮營的地點是一處U型谷地, 後方是一片原始森林, U型谷地底層營地最避風留給主帳和隊友,  而我們家和其它隊友則搭在上層, 上層的風雖然稍微大些但景色最美. 最底層營地, 森林中還藏著3頂帳 上層風景好 大人們窩在主帳聊天取暖, 大小孩和小小孩則分成二隊, 各自有各自的天地.   
Thumbnail
Hi 我是 VK~ 在 8 月底寫完〈探索 AI 時代的知識革命:NotebookLM 如何顛覆學習和創作流程?〉後,有機會在 INSIDE POSSIBE 分享兩次「和 NotebookLM 協作如何改變我學習和創作」的主題,剛好最近也有在許多地方聊到關於 NotebookLM 等 AI 工具
Thumbnail
國泰CUBE App 整合外幣換匯、基金、證券等服務,提供簡便、低成本的美股定期定額投資解決方案。 5分鐘開戶、低投資門檻,幫助新手輕鬆進軍國際股市;提供人氣排行榜,讓投資人能夠掌握市場趨勢。
Thumbnail
這是張老師的第三本書,我想前二本應該也有很多朋友們都有讀過,我想絕對是受益良多,而這次在書名上就直接點出,著重在從投資的角度來切入
Thumbnail
需求情境: 一般的看盤軟體,雖然都能針對一籃子自選股票,列出其即時行情和當天漲幅,但若要看「五日漲幅」呢?那就少見了,但這對我很重要。因為小部位的波段性價差交易是個好策略,這時候若能排序好一整排看下來,可以節省大量點來點去的成本,很有價值,所以就來自己刻。 解決方案: 從大處著眼,UI 最外層
Thumbnail
Part.1 搞定基本的 UI 開始開發 iOS App。 首先準備一台 Mac,然後安裝 Xcode,新增專案,系統即刻生成基本的專案結構。coding 的起點在檔案 ContentView.swift: import SwiftUI struct ContentView: View {  
Thumbnail
以時尚設計、工藝美學與表演藝術聞名的V&A博物館正在尋找美國天后泰勒絲(Taylor Swift)的頭號粉絲!
Thumbnail
繼前一陣子 Facebook 的元宇宙浪潮席捲全球,今年微軟旗下的 AI 聊天機器人「ChatGPT」更是引爆話題!不只每個人對未來的生活與市場型態有了不一樣的想像,許多家長和學生們更是開始煩惱,面對今年的 AI 元年,該怎麼提前準備與選擇科系,才能搶先跟上未來趨勢與世界接軌而不被淘汰。 首先
石化原料在護膚產品中使用的情況因產品成分和目的而異,但一般而言,石化原料可能具有一些優點和缺點。 石化原料製作保養品的優點 穩定性: 某些石化原料在護膚產品中可以提供穩定性,這意味著產品的質地和成分在長時間內能夠保持不變。 對皮膚的缺點...
1,抽菸者是否對身體健康有危害? 是,不僅是自身健康危害,也會影響身旁的吸二手菸者,造成肺部傷害 2,不知道煙有沒有辦法透過其他的東西,來讓這些吸菸成癮者可以找到替代的方式,可以提神以及健康,又不會影響身旁周遭的人,造成健康危害
Thumbnail
來到都會區裡的眷村印象~四四南村 四四南村位在台北市信義區101對面 很難想像會有早期的眷村佇立在台北市的都市叢林裡,這裡早期是聯勤第四十四兵工廠由於位在工廠的南邊因而命名。
Thumbnail
由於這次元旦寒流威力太強, 加上要在海拔2700M的高山上野營,  仔細考慮後決定讓蛋花把登山服都穿好穿滿.  當天行進中, 大人小孩都是穿二件排汗衣加上防曬衣外加背心, 遇到風大或走進霧淞森林時看狀況加上防風衣, 晚上在營地會加上羽絨或化纖外套. 我以圖像方式列出蛋花小隊全員當天的服裝穿
Thumbnail
20200106 這次蛋花小隊在超急寒流包圍全台的元旦假期, 出發到平多緃走2天, 其中一天要在海拔2700公呎的高山谷地野營.   出發前一週檢查自己的裝備櫃, 能夠應付這次惡劣天氣的睡眠系統只有2組, 不過還好我們的好朋友探索戶外義氣相挺, 出借公裝賜給我們温暖, 讓我們能安全下山,完成這次
Thumbnail
前晚紮營的地點是一處U型谷地, 後方是一片原始森林, U型谷地底層營地最避風留給主帳和隊友,  而我們家和其它隊友則搭在上層, 上層的風雖然稍微大些但景色最美. 最底層營地, 森林中還藏著3頂帳 上層風景好 大人們窩在主帳聊天取暖, 大小孩和小小孩則分成二隊, 各自有各自的天地.