W aplikacji na iPhone'a chcę programowo obrócić widok o 180 stopni.Czy można programowo obrócić widok o 180 stopni?
Czy to możliwe, jeśli tak, to w jaki sposób?
Dzięki!
W aplikacji na iPhone'a chcę programowo obrócić widok o 180 stopni.Czy można programowo obrócić widok o 180 stopni?
Czy to możliwe, jeśli tak, to w jaki sposób?
Dzięki!
Powinno być możliwe dzięki zastosowaniu CGAffineTransform
Cytat z this question, to powinno załatwić sprawę:
CGFloat radians = atan2f(yourView.transform.b, yourView.transform.a);
CGFloat degrees = radians * (180/M_PI);
CGAffineTransform transform = CGAffineTransformMakeRotation((90 + degrees) * M_PI/180);
yourView.transform = transform;
sam wynik jak @ odpowiedź Manny Korzystanie inną funkcję.
CGFloat degreesOfRotation = 180.0;
view.transform = CGAffineTransformRotate(view.transform,
degreesOfRotation * M_PI/180.0);
jako „CGAffineTransformRotate” używa radianach jak jego jednostkę miary i 180 stopni jest taka sama jak PI, zamiast matematyki przewidziane w innych odpowiedzi można po prostu zrobić:
view.transform = CGAffineTransformRotate(view.transform, M_PI);
Swift 3:
view.transform = view.transform.rotated(by: .pi)
Jeśli planujesz robić dużo przekształceń, to chyba najlepiej przeczytać na radiany, aby zrozumieć, co jest goi ng na.
Proste rozwiązanie:
view.transform = CGAffineTransformMakeRotation(degrees*M_PI/180);
Swift 3:
let rotationDegrees = 180.0
let rotationAngle = CGFloat(rotationDegrees * M_PI/180.0)
view.transform = CGAffineTransform(rotationAngle: rotationAngle)
Najnowsze Swift 3 Składnia
view.transform = view.transform.rotated(by: .pi)
Swift 4:
self.view.transform = CGAffineTransform(rotationAngle: .pi);
I KOMENTARZ (I widocznie nie masz wystarczającej liczby punktów, aby wejść do mojego komentarza na jego/jej odpowiedź) dla Benjamina Mayo lub vtcajones odpowiedź:
view.transform = view.transform.rotated(by: .pi)
to zadziała za pierwszym razem, ale następnym razem, gdy zostanie wywołany, spowoduje ponowne obrócenie widoku, z powrotem do oryginalnego obrotu, co prawdopodobnie nie jest tym, czego potrzebujesz. Bezpieczniej byłoby ustawić wartość transformacji dokładnie za każdym razem.
Obraca to o 90 stopni. Jeśli chcesz go obrócić o 180 stopni, ostatnia linia powinna być 'CGAffineTransformMakeRotation ((' ** 180 ** '+ degrees) * M_PI/180)' zamiast 90 –