Как мы можем нарисовать живую тень на эффекте поворота для угла (градусов: 0) в SwiftUI?

#swiftui

#swiftui

Вопрос:

Для меня это очень странная ошибка или проблема! У меня есть красный прямоугольник (), который вращается одним нажатием пользователя, и после этого у меня есть теневой вид для моего прямоугольника (). после поворота появляется более 1 теневого вида для прямоугольника (), которые отображаются друг над другом и не работают! Для меня это не логично, почему это происходит? .shadow должен возвращать только 1 вид, но в этом случае возвращает более 1 вида для угла (градусов: 0) если вы начинаете с более чем 0, все работает просто отлично, например, используйте это: Угол (градусов: 10). Как только вы запустите приложение с углом (градусов: 0), оно не будет работать!

 struct ContentView: View {

@State var rotationAngle: Angle = Angle(degrees: 0) //← Here

var body: some View {
    
    
    

    Rectangle()
        .fill(Color.red)
        .frame(width: 200, height: 100, alignment: .center)
        .rotationEffect(rotationAngle)
        .onTapGesture
        {
            rotationAngle  = Angle(degrees: 10)
        }
        .shadow(color: Color.black, radius: 10, x: 0, y: 20)
        
        
    
    
    
        
        
    }
}
  

Это мое спасение для временного использования:

 .rotationEffect(rotationAngle == Angle(degrees: 0) ? Angle(degrees: 0.001) : rotationAngle)
  

что у вас?

Комментарии:

1. Это странная ошибка. Обходной путь: начните с Angle(degrees: 360) .

2. да! это странно! Если бы я задал угол (градусов: 0.00000000001), это работало бы нормально, но не работало бы для 0 или 0.0

3. Если вы начнете с Angle(degrees: -20) , он будет работать нормально, пока не попадет 10 .

4. да, если я использую -20.0000000001, все будет работать нормально! но не -20

5. Я думаю, что это ошибка SwiftUI, связанная с функцией тени от Apple, забыл очистить старый contextView, не имеет значения, насколько велик ваш шаг угла поворота или с какой степени вы начинаете! это создает проблему для очистки контекста для нулевой степени! ДАЖЕ с радианами! Если вы начнете с zeo, это не сработает

Ответ №1:

Проблема была решена с помощью Xcode 12.1 / iOS 14.1, которая была ошибкой более старой версии.