如何在 WatchOS 中使用背景视图填充整个 Button 区域?

Posted

技术标签:

【中文标题】如何在 WatchOS 中使用背景视图填充整个 Button 区域?【英文标题】:How do you fill entire Button area with background View in WatchOS? 【发布时间】:2019-12-19 02:12:57 【问题描述】:

我试图让我的背景视图跨越 Apple Watch 外形尺寸上按钮的整个区域。

struct SurveyView: View 

var body: some View 
    Button(action: 
        print("Test tapped.")
    ) 
        HStack 
            Text("Test")
                .fontWeight(.semibold)
        
        .frame(minWidth: 0, maxWidth: .infinity)
        .padding()
        .foregroundColor(.white)
        .background(LinearGradient(gradient: Gradient(colors: [.green, .blue]), startPoint: .leading, endPoint: .trailing))


     
   

如何让背景跨越整个 Button?

更新:原来我的问题也与处于列表视图中有关。设置蒙版并不能完全解决它。

struct SurveyView: View 

var body: some View 
    List() 
        Button(action: 
            print("Test tapped.")
        ) 
            Text("Test")
                .fontWeight(.semibold)
        
        .background(Color.orange)


        .mask(RoundedRectangle(cornerRadius: 24))
        
    

【问题讨论】:

【参考方案1】:

我会这样做:

Button(action: 
    print("Test tapped.")
) 
    Text("Test")
        .fontWeight(.semibold)
        .padding()
        .foregroundColor(.white)

.background(LinearGradient(gradient: Gradient(colors: [.green, .blue]), startPoint: .leading, endPoint: .trailing))
.mask(RoundedRectangle(cornerRadius: 24))

更新:列表的情况

var body: some View 
    List() 
        Button(action: 
            print("Test tapped.")
        ) 
            Text("Test")
                .fontWeight(.semibold)
                .padding()
        
        .background(Color.orange)
        .mask(RoundedRectangle(cornerRadius: 24))
        .listRowPlatterColor(Color.clear)
    

【讨论】:

这是一个很好的静态按钮解决方案。我已经更新了我的问题,专门要求在列表视图中添加一个按钮。 有没有办法获得相同的结果,但使用 swift 5?

以上是关于如何在 WatchOS 中使用背景视图填充整个 Button 区域?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 RecyclerView 中填充整个屏幕

如何在 watchOS 上像文本视图一样显示文本

在 WatchOS 上启动视图

如何用图像作为背景填充 iOS 堆栈视图(UIStackView)?

如何在我的 Android 应用程序中使视图填充其父级的整个宽度?

android开发xml中如何设置背景图才能填充整个屏幕?代码如下