SwiftUI - 在使用 rotation3DEffect 转换视图时看到条件视图的鬼边缘

时间:2020-12-18 23:06:04

标签: swiftui

我一直在尝试使用带有 rotation3DEffect 的动画过渡来实现应用程序中的条件视图。但是我在条件视图应该隐藏时看到了随机的鬼边缘。 请参阅示例代码和图像。有没有人见过类似的问题并知道问题是什么?作为一个单独但更小的问题,画布不会呈现插入过渡,但它在模拟器中运行良好。谢谢。

struct RotateView3DModifer: ViewModifier {
var angleDegrees: Double

func body(content: Content) -> some View {
    content.rotation3DEffect(
        Angle(degrees: angleDegrees),
        axis: (x: 0.0, y: 1.0, z: 0.0) )
}

}

extension AnyTransition {
static var rotateInOut: AnyTransition {
    
    let insertion = AnyTransition.modifier(
            active: RotateView3DModifer(angleDegrees: -90),
            identity: RotateView3DModifer(angleDegrees: 45) )
    
    let removal = AnyTransition.modifier(
            active: RotateView3DModifer(angleDegrees: 90),
            identity: RotateView3DModifer(angleDegrees: 0) )
    
    return AnyTransition.asymmetric(insertion: insertion, removal: removal)
}

}

struct ContentView: View {
@State var show: Bool = false

var body: some View {
    VStack {
        Button(
            action: { withAnimation { show.toggle() }},
            label: { Text("\(show ? "Showing" : "Hidden")") } )
        
        VStack {
            if (show) {
                Rectangle()
                    .transition(.rotateInOut)
            }
        }
        .frame(width: 100, height: 150)
    }
}

}

When showing the view Ghost edge still showing when view hidden

1 个答案:

答案 0 :(得分:0)

确认这是模拟器和画布的问题。实际设备上不会出现重影边缘。