簡體   English   中英

SwiftUI 以編程方式更改視圖的 position

[英]SwiftUI changing the position of a view programmatically

Swift 5、iOS 13

一個 SwiftUI 問題

我想在創建視圖時記錄它的 position。 我想保存 position 因為如果我按下重置按鈕,我希望能夠將它移回那里。 有問題的視圖是可拖動的。 我可以在創建幾何閱讀器時使用它來獲取它的坐標,並使用 .appear 屬性對其進行設置。 我可以使用 position 屬性將其放置在 X 點。

但是如果我使用 position 我需要給它坐標。 如果我給它坐標,我就不能使用像 HStack 這樣理智的東西來放置它。 我需要 position 屬性在第一次運行時被忽略,然后每次都應用。

感覺就像是先有雞還是先有蛋的問題。 有沒有人解決這個問題? 一個瘋狂的想法,我可以使用偏移量嗎?

對我來說,你對使用.offset(x:y:)修飾符的瘋狂猜測似乎讓你走上了正確的道路。

.onAppear{}中相關視圖的 GeometryReader 代理中獲取 position 並使用 .offset 恢復它。

我的這個較早的答案只使用 x 軸,應該很容易將其應用於 y 軸: https://stackoverflow.com/a/60854527/301790

如果您需要更多指導,請考慮發布准備復制並粘貼到 Xcode 的代碼。

這里是 UIButton 的代碼示例

 Button(action: {
        //Here what you want to do on button click:
 }) {
 HStack {
 Spacer()
 Text("Scores")
 Spacer()
 }
 }.frame(width: 90, height: 45, alignment: .center)
           .foregroundColor(Color.white)
           .background(Color.black)
           .contentShape(Rectangle())
           .padding(EdgeInsets(top: 16, leading: 
            UIScreen.main.bounds.size.width - 110 , bottom: 16, trailing: 20))

UIScreen.main.bounds.size.width是獲取屏幕寬度,然后您可以從中減去按鈕以將其調整到右上角。 如附圖所示: 參考。圖片

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM