【问题标题】:SwiftUI round button deforms when clickedSwiftUI 圆形按钮在单击时会变形
【发布时间】:2019-11-27 18:15:24
【问题描述】:

我用以下代码创建了一个圆形按钮:

struct RoundButton : View {

    var value = "..."

    var body: some View {
        GeometryReader { geometry in
            Button(action: {}) {
                VStack {
                    Text(self.value)
                        .font(.headline)
                        .color(Color("NightlyDark"))
                    Text("MIN")
                        .font(.footnote)
                        .color(.white)
                }
                .frame(width: geometry.size.width, height: geometry.size.height)
            }
            .clipShape(Circle())
        }
    }
}

但是当点击按钮时,形状会变形。知道为什么会这样吗?

当我使用.mask(Circle()) 时也会发生同样的情况

这是测试版还是正常行为?有没有人知道创建圆形按钮的更好方法?

【问题讨论】:

    标签: xcode button rounding swiftui beta


    【解决方案1】:

    这里发生的是Button 默认情况下将所有屏幕[宽度+高度]视为它们的框架。

    所以你也必须设置Button

    我认为这是watchOS中的默认行为

    这里是你的代码:

    struct RoundButton: View {
    
        var value = "..."
    
        var body: some View {
    
            GeometryReader { geometry in
    
                Button(action: {}) {
                    VStack {
                        Text(self.value)
                            .font(.headline)
                            .foregroundColor(Color("NightlyDark"))
                        Text("MIN")
                            .font(.footnote)
                            .foregroundColor(.white)
                    }
                    .frame(width: geometry.size.width, height: geometry.size.height)
                }
                .frame(width: geometry.size.width, height: geometry.size.height)
                    .clipShape(Circle())
            }
    
        }
    }
    

    注意:我使用的是 Xcode 11 Beta 4

    【讨论】:

    • 知道新更新是否有所改变?我的圈子又被剪掉了,即使有了新代码
    猜你喜欢
    • 2015-11-03
    • 1970-01-01
    • 2019-01-03
    • 2021-11-08
    • 1970-01-01
    • 2012-08-28
    • 2017-10-13
    • 1970-01-01
    相关资源
    最近更新 更多