addArc와 함께 SwiftUI 회전이 일부 경우 올바르게 작동하지 않습니다.

사용자 3069232

Swift 5, iOS 13

addArc를 사용하여 반원을 그린 다음 rotation3DEffect를 사용하여 회전합니다. y 축에서는 완벽하게 작동하지만 x 축에서는 깨진 것처럼 보입니다. 내가 여기서 뭔가 잘못하고 있니?

이 코드가 작동합니다. 그러나 그것은 kludge입니다.

MyArc2의 x 축을 원하고 offset + rotationEffect를 사용할 필요가 없습니다. 첫 번째 이미지는이 코드에서있는 그대로입니다.

그러나 x 축을 사용하면 올바르게 그려지지 않습니다.

import SwiftUI

struct ContentView: View {
  @State var turn:Double = 0
  var body: some View {
    return VStack {
    Image(systemName: "circle")
      .foregroundColor(Color.blue)
      .onTapGesture {
        withAnimation(.linear(duration: 36)) {
          self.turn = 360
       }
     }
     Globe2View(turn: $turn)
    } // VStack
  }
 }

 struct Globe2View: View {
  struct MyArc : Shape {
    func path(in rect: CGRect) -> Path {
    var p = Path()
    p.addArc(center: CGPoint(x: UIScreen.screenWidth/2, y:UIScreen.screenHeight/2), radius: 64, startAngle: .degrees(90), endAngle: .degrees(270), clockwise: true)
    return p
}
}
   struct MyArc2 : Shape {
   func path(in rect: CGRect) -> Path {
    var p = Path()
    p.addArc(center: CGPoint(x: UIScreen.screenWidth/2, y:UIScreen.screenHeight/2), radius: 64, startAngle: .degrees(90), endAngle: .degrees(270), clockwise: true)
  return p
  }
  }
  @Binding var turn:Double
  var body: some View {
    ZStack {
     ForEach(0..<12) { loop in
      MyArc()
        .stroke(Color.blue, lineWidth: 2)
        .rotation3DEffect(.degrees(self.turn + Double((loop * 30))), axis: (x: 0, y: -1, z: 0), anchor: UnitPoint.center, anchorZ: 0, perspective: 0)
  }
      ForEach(0..<12) { loop in
       MyArc2()
         .stroke(Color.green, lineWidth: 2)
        .rotation3DEffect(.degrees(self.turn + Double((loop * 30))), axis: (x: 0, y: -1, z: 0), anchor: UnitPoint.center, anchorZ: 0, perspective: 0)
        .rotationEffect(.degrees(90))
        .offset(x: 20, y: 20)
    }
  }
 }
}

여기에 이미지 설명 입력

마지막 몇 줄을 이렇게 변경하면 ...

struct MyArc2 : Shape {
func path(in rect: CGRect) -> Path {
    var p = Path()
    p.addArc(center: CGPoint(x: UIScreen.screenWidth/2, y:UIScreen.screenHeight/2), radius: 64, startAngle: .degrees(0), endAngle: .degrees(180), clockwise: true)
  return p
}
}

 ForEach(0..<12) { loop in
    MyArc2()
      .stroke(Color.green, lineWidth: 2)
      .rotation3DEffect(.degrees(self.turn + Double((loop * 30))), axis: (x: 1, y: 0, z: 0), anchor: UnitPoint.center, anchorZ: 0, perspective: 0)
//          .rotationEffect(.degrees(90))
//          .offset(x: 20, y: 20)
   }

여기에 이미지 설명 입력

그의 성질

똑같기 때문에 왜 필요한지는 분명하지 않지만 MyArc2다음은 모양이 간단하게 수정되어 예상대로 작동합니다 (내 마음에).

Xcode 11.4 / iOS 13.4로 테스트 됨

데모

struct Globe2View: View {
    struct MyArc : Shape {
        func path(in rect: CGRect) -> Path {
            var p = Path()
            // used provided dynamic rect instead of hardcoded NSScreen
            p.addArc(center: CGPoint(x: rect.width/2, y:rect.height/2), radius: 64, startAngle: .degrees(90), endAngle: .degrees(270), clockwise: true)
            return p
        }
    }

    @Binding var turn:Double
    var body: some View {
        ZStack {
            ForEach(0..<12) { loop in
                MyArc()
                    .stroke(Color.blue, lineWidth: 2)
                    .rotation3DEffect(.degrees(self.turn + Double((loop * 30))), axis: (x: 0, y: -1, z: 0), anchor: UnitPoint.center, anchorZ: 0, perspective: 0)
            }
            ForEach(0..<12) { loop in
                MyArc()
                    .stroke(Color.green, lineWidth: 2)
                    .rotation3DEffect(.degrees(self.turn + Double((loop * 30))), axis: (x: 0, y: -1, z: 0), anchor: UnitPoint.center, anchorZ: 0, perspective: 0)
                    .rotationEffect(.degrees(90))
            }
        }
    }
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

svg 내부 경로가 올바르게 회전하지 않습니다.

분류에서Dev

pyautogui와 일정이 함께 작동하지 않습니다.

분류에서Dev

Windows 용 Git과 함께 설치된 Vim이 PowerShell에서 올바르게 작동하지 않습니다.

분류에서Dev

jquery ui drop이 도우미 복제와 함께 작동하지 않습니다.

분류에서Dev

UITableView 모서리 반경이 올바르게 작동하지 않습니다.

분류에서Dev

Java에서 파일이 올바르게 작동하지 않습니다.

분류에서Dev

tightvnc가 제대로 작동하지 않습니다. X 커서와 함께 회색 배경이 표시됨

분류에서Dev

tightvnc가 제대로 작동하지 않습니다. X 커서와 함께 회색 배경이 표시됨

분류에서Dev

조건이 올바르게 작동하지 않는 경우 자바

분류에서Dev

일부 웹 사이트는 www와 함께 작동하지 않습니다. 접두사

분류에서Dev

코드는 입력 내부에 쓰여진 경우에만 작동하지만 while 루프에서는 에코와 함께 작동하지 않습니다.

분류에서Dev

트랙볼이 올바르게 회전하지 않습니다.

분류에서Dev

SFINAE와 부패는 함께 작동하지 않습니다. 왜?

분류에서Dev

setInterval ()이 회전과 함께 작동하지 않습니다.

분류에서Dev

API가 원시 데이터와 함께 유효한 응답을 반환하지 않습니다. 하지만 우편 배달부에서 잘 작동

분류에서Dev

Python의 사전이 csv 파일에서 올바르게 작동하지 않습니다.

분류에서Dev

EdgeIgnoreSafeArea (.all)와 함께 작동하지 않는 SwiftUI 시트 모달 배경-왜?

분류에서Dev

부울이 올바르게 작동하지 않음

분류에서Dev

페이지에 2 개 이상의 iFrame이있는 경우 Chrome iFrame 기록이 올바르게 작동하지 않습니다. (버전 35.0.1916.114)

분류에서Dev

SwiftUI : onDelete가 UI를 올바르게 업데이트하지 않습니다.

분류에서Dev

`mix-blend-mode`와 함께`backdrop-filter : blur`를 사용하면 텍스트 색상이 올바르게 표시되지 않습니다.

분류에서Dev

Python findall이 올바르게 일치하지 않습니다.

분류에서Dev

BrowserSync 파일 변경 사항은 Vagrant와 함께 전파되지 않습니다.

분류에서Dev

ImageIcon이 나와 함께 작동하지 않습니다.

분류에서Dev

.htaccess RewriteRule이 "/"와 함께 작동하지 않습니다.

분류에서Dev

Crontab이 Macchanger와 함께 @reboot를 작동하지 않습니다.

분류에서Dev

JQuery Dimmer와 No Scrolling이 함께 작동하지 않습니다.

분류에서Dev

경고와 함께 작동하는 JavaScript는 작동하지 않습니다.

분류에서Dev

폴더에서 파일 이름을 바꿀 때 와일드 카드가 이름 바꾸기와 함께 작동하지 않습니다.

Related 관련 기사

  1. 1

    svg 내부 경로가 올바르게 회전하지 않습니다.

  2. 2

    pyautogui와 일정이 함께 작동하지 않습니다.

  3. 3

    Windows 용 Git과 함께 설치된 Vim이 PowerShell에서 올바르게 작동하지 않습니다.

  4. 4

    jquery ui drop이 도우미 복제와 함께 작동하지 않습니다.

  5. 5

    UITableView 모서리 반경이 올바르게 작동하지 않습니다.

  6. 6

    Java에서 파일이 올바르게 작동하지 않습니다.

  7. 7

    tightvnc가 제대로 작동하지 않습니다. X 커서와 함께 회색 배경이 표시됨

  8. 8

    tightvnc가 제대로 작동하지 않습니다. X 커서와 함께 회색 배경이 표시됨

  9. 9

    조건이 올바르게 작동하지 않는 경우 자바

  10. 10

    일부 웹 사이트는 www와 함께 작동하지 않습니다. 접두사

  11. 11

    코드는 입력 내부에 쓰여진 경우에만 작동하지만 while 루프에서는 에코와 함께 작동하지 않습니다.

  12. 12

    트랙볼이 올바르게 회전하지 않습니다.

  13. 13

    SFINAE와 부패는 함께 작동하지 않습니다. 왜?

  14. 14

    setInterval ()이 회전과 함께 작동하지 않습니다.

  15. 15

    API가 원시 데이터와 함께 유효한 응답을 반환하지 않습니다. 하지만 우편 배달부에서 잘 작동

  16. 16

    Python의 사전이 csv 파일에서 올바르게 작동하지 않습니다.

  17. 17

    EdgeIgnoreSafeArea (.all)와 함께 작동하지 않는 SwiftUI 시트 모달 배경-왜?

  18. 18

    부울이 올바르게 작동하지 않음

  19. 19

    페이지에 2 개 이상의 iFrame이있는 경우 Chrome iFrame 기록이 올바르게 작동하지 않습니다. (버전 35.0.1916.114)

  20. 20

    SwiftUI : onDelete가 UI를 올바르게 업데이트하지 않습니다.

  21. 21

    `mix-blend-mode`와 함께`backdrop-filter : blur`를 사용하면 텍스트 색상이 올바르게 표시되지 않습니다.

  22. 22

    Python findall이 올바르게 일치하지 않습니다.

  23. 23

    BrowserSync 파일 변경 사항은 Vagrant와 함께 전파되지 않습니다.

  24. 24

    ImageIcon이 나와 함께 작동하지 않습니다.

  25. 25

    .htaccess RewriteRule이 "/"와 함께 작동하지 않습니다.

  26. 26

    Crontab이 Macchanger와 함께 @reboot를 작동하지 않습니다.

  27. 27

    JQuery Dimmer와 No Scrolling이 함께 작동하지 않습니다.

  28. 28

    경고와 함께 작동하는 JavaScript는 작동하지 않습니다.

  29. 29

    폴더에서 파일 이름을 바꿀 때 와일드 카드가 이름 바꾸기와 함께 작동하지 않습니다.

뜨겁다태그

보관