HStack中的SwiftUI按钮宽度不正确

时间:2020-10-25 18:02:10

标签: ios swift swiftui

创建视图时遇到一些问题。

enter image description here

Contentview

VStack{
    Capsule()
        .fill(Color.white)
        .frame(width: 50, height: 5)
        .padding(.top)
        .padding(.bottom,5)
    
    Text("Hello world")
        .font(.title)
    //Time
    ScrollView(.horizontal){
        HStack(spacing: 0){
            Button(action: {
                
            }, label: {
                Text("First")
            }).buttonStyle(TimeframeButtonStyle())
            Button(action: {
                
            }, label: {
                Text("Second")
            }).buttonStyle(TimeframeButtonStyle())
            Button(action: {
                
            }, label: {
                Text("Thirdiary")
            }).buttonStyle(TimeframeButtonStyle())
    
        }.frame(height: 100)
        
    }
    //Type
    HStack{
        
    }
}

ButtonStyle

struct TimeframeButtonStyle: ButtonStyle {
    func makeBody(configuration: Configuration) -> some View {
        configuration.label
            .frame(maxWidth: .infinity)
            .foregroundColor(.red)
            .lineLimit(1)
            .font(.title)
            .overlay(RoundedRectangle(cornerRadius: 25.0).stroke(Color.red, lineWidth: 1))
            
            .padding(.horizontal, 20)
            
    }
}

如您所见,按钮位于滚动视图内部,该视图随后包含一个HStack。 问题在于按钮试图适合在同一屏幕上。

我要搜索的是如何使按钮自然变大?

FixedSize会创建此标签,这会使标签太靠近边界enter image description here

1 个答案:

答案 0 :(得分:0)

如何使按钮自然大小?

您可以尝试fixedSize()

Button(action: {
    
}, label: {
    Text("First")
})
.buttonStyle(TimeframeButtonStyle())
.fixedSize()