SwiftUI以编程方式更改视图的位置

时间:2020-04-11 15:04:34

标签: ios swift view swiftui

Swift 5,iOS 13

SwiftUI问题

我想记录视图创建时的位置。 我想保存位置,因为如果我按下重置按钮,我希望能够将其移回该位置。 该视图是可拖动的。 创建几何图形读取器时,可以使用它来设置其坐标,并使用.appear属性进行设置。 而且我可以使用position属性将其放置在X点。

但是,如果我使用该位置,则需要给它坐标。而且,如果我给它提供坐标,我将无法使用像HStack这样理智的东西来放置它。我需要在首次运行时忽略position属性,然后在以后每次应用。

感觉就像是鸡和鸡蛋的问题。有人解决了吗?一个疯狂的想法,也许可以使用偏移量吗?

1 个答案:

答案 0 :(得分:3)

对我来说,您对使用.offset(x:y:)修饰符的疯狂猜测似乎使您处在正确的轨道上。

.onAppear{}中相关视图的GeometryReader代理中获取位置,然后使用.offset恢复该位置。

我的较早答案仅使用x轴来完成此操作,应该也很容易将其应用于y轴:https://stackoverflow.com/a/60854527/301790

如果您需要更多指导,请考虑发布代码,以准备将其复制并粘贴到Xcode中。