使用 SwiftUI 移动带有图像的按钮

Posted

技术标签:

【中文标题】使用 SwiftUI 移动带有图像的按钮【英文标题】:Moving button with image with SwiftUI 【发布时间】:2020-06-24 20:35:20 【问题描述】:

我是第一次使用 SwiftUI,正在努力创建一个页面。在提供的屏幕截图中,我有一个按钮,一旦按下该按钮就应该移动到另一个页面,这是绿色突出显示的区域,但红色突出显示的是您必须单击才能进入导航页面的位置。我觉得它与 ZStack 有关,但我似乎无法弄清楚。

Button(action: 
                self.isActive = true
            ) 
            ZStack 
                Image(uiImage: #imageLiteral(resourceName: "Group 897")).renderingMode(.original).frame(width: 30, height: 60).padding(.top, 16).offset(x:103, y:-105)
               
            
         

基本上我的问题是:如何使按钮触发器移动到图像移动到的位置?

SwiftUI screenshot

【问题讨论】:

【参考方案1】:

我认为这是由您的.offset(x:103, y:-105) 引起的,您更改了按钮的视觉位置(按钮的图像),但可点击的仍然停留在同一位置。

尝试使用 Stack 架构来定位您的按钮,例如:

VStack 
   HeadingBar() // your heading bar
   HStack  
     Spacer() // move you button to trailing of screen, then just indent with padding
     Button().padding(.trailing, 10)
    // end of HStack
   RemainingView() // rest of your page
 // end of VStack

如果你想使用偏移量,你必须这样做:

Button(action: 
                self.isActive = true
            ) 
                Image("yourImage")
            
            .offset(x:103, y:-105)

但 Stack 架构更适合布局,因为您的应用在所有设备上看起来都相似..

【讨论】:

【参考方案2】:

意识到我的错误。我不得不将偏移量从图像上移到按钮上。

【讨论】:

以上是关于使用 SwiftUI 移动带有图像的按钮的主要内容,如果未能解决你的问题,请参考以下文章

从数组中显示带有名称的随机图像。 (SwiftUI)

SwiftUI 列表未使用 ForEach 正确更新

iOS Swift - 带有滑块的移动图像

如何更新按钮图像,即`Image(SystemName)` 按下 swiftUI

Swift 3 - 在文本上方创建带有可缩放图像的按钮的最合适方法

SwiftUI 的问题:带有按钮的垂直滚动视图