技術問答
技術文章
iT 徵才
Tag
聊天室
2025 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
2021 iThome 鐵人賽
DAY
16
0
Mobile Development
麻瓜學習 iOS 開發
系列 第
16
篇
Day16:SwiftUI—GeometryReader
13th鐵人賽
enolazxy
2021-10-01 23:53:57
1947 瀏覽
分享至
前言
前面幾天介紹了很多設計 SwiftUI 畫面的元件,
那要怎麼知道元件的位置和尺寸大小呢?
這邊就要引出 GeometryReader。
實做
打開一個專案,
並在 ContentView 裡宣告一個矩形:
我們 hardcode 了這個矩形的尺寸,
但是我們常常在不同的裝置上跑我們的 code,
這樣 hardcode 的方式肯定行不通,
通過 GeometryReader 來使用相對值確定元件的尺寸:
我們會發現這個矩形位於左上角,
這是因為我們放入 GeometryReader 的所有東西自動定位在左上角。
在 ContentView 裡面點擊 GeometryReader 時會看到整個框架,
即整個可用空間。
所以我們可以通過訪問其參數來確定尺寸大小:
通過 GeometryReader 來定位相對於 global 坐標
添加 onTapGesture 並且印出兩個變數 x、y,
來表示 x 軸、y 軸:
有 global - 相對於全局即全屏的坐標,
local - 相對於其父級的局部坐標,
這邊選擇 global。
選擇 x、y 的最小坐標:
打開 simulator 並點擊矩形:
打開控制台:
這表示相對於整個屏幕 x 的位置距離是 0,
y 相對於屏幕上方距離是 47。
定位相對於 local 坐標
將 global 改成 local print 出來:
出現 x:0,y:0,
因為 local 是相對於其父級即 GeometryReader 的定位:
在 GeometryReader{} 後添加 ignoreSafeArea
矩形出現在屏幕左上方,
global、local 所表示的區域都是整個屏幕,
所以 x、y 值都為 0。
留言
追蹤
檢舉
上一篇
Day15:SwiftUI—TabView
下一篇
Day17:SwiftUI— EnvironmentObject
系列文
麻瓜學習 iOS 開發
共
30
篇
目錄
RSS系列文
訂閱系列文
2
人訂閱
26
Day26:TabView
27
Day27:用 EnvironmentObject 傳遞數據
28
Day28:Update the Data and the Featured View
29
Day29: Picker controller
30
Day 30 : DetailView
完整目錄
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
902
組
團體組數
37
組
累計文章數
19838
篇
完賽人數
529
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
看更多
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
17th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
linux
windows server
css
react
熱門問題
可以自訂規則的密碼產生器....
FortiGate 的VLAN Switch問題
爬蟲問題, 如何在GOOGLE搜尋關鍵字後,取前10頁的網址?
源碼檢測稽核會不會超耗時
內控內稽的作業流程圖.請問哪裡有設備工程業的
WIN SERVER 出現錯誤LOG
你們都在哪裡購買SSL
VMware上的虛擬機多了一個VMDK的硬碟在增長
浮水印在PDF上沒有辦法顯示
DOCKER問題請教
熱門回答
可以自訂規則的密碼產生器....
源碼檢測稽核會不會超耗時
你們都在哪裡購買SSL
FortiGate 的VLAN Switch問題
內控內稽的作業流程圖.請問哪裡有設備工程業的
熱門文章
讀書會邀請: AWS 雲端攻頂學習計畫|SAA 基礎 + SAP/DevOps 分流 從理論到企業級部署,每週一次的架構思維演練
Google 暗網監控 暗網報告
[實作] 不用買貴森森的 Vector!我用 Python 自製了一套 J1939 CAN Bus 解碼器
Microsoft MS-900 認證考試介紹|Microsoft 365 Fundamentals 完整指南(2025 最新)
歐盟資安新規定 資訊安全 Notics 提示多到煩死你 Enabling this feature may expose your device to security risks.
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}