Como girar objetos em seu aplicativo ios
Aqui, você descobrir como girar uma vista (neste caso, virar o carro) em seu aplicativo iOS. Para fazer isso, você atualizar o rodar esboço código que você começou com e substituí-lo com o código em negrito.
- (Void) {rodar CGAffineTransform transformar = CGAffineTransformMakeRotation (M_PI) - vazio (^ animação) () = ^ () {self.car.transformar = transforma- } - vazio (^ conclusão) (BOOL) = ^ (BOOL terminado) {[Auto returnCar] - } - [UIView animateWithDuration: 3: animações de conclusão animação: conclusão] -}
Este método usa as declarações de bloco.
o CGAffineTransform estrutura de dados representa uma matriz utilizada para transformações afins - um modelo de como pontos em uma coordenada mapa do sistema de pontos em outro sistema de coordenadas. Apesar CGAffineTransform tem uma série de usos (como a escala ea tradução de um sistema de coordenadas), o único coberto aqui é o método de rotação você usa na Listagem 10-3:
CGAffineTransformMakeRotation (M_PI)
Para girar uma vista, você especificar o ângulo (em radianos) para girar os eixos do sistema de coordenadas. Considerando graus são números entre 0 e 360, radianos, embora semelhantes, gama de 0 a 2n. Então, quando você cria uma rotação que transforma um objeto em torno de um semi-círculo, que a rotação em radianos é pi. (M_PI é uma constante que representa o sistema pi).
Apenas para tornar sua vida interessante, você deve observar que no iOS, positivo é sentido anti-horário, mas no Mac OS X, positivo é no sentido horário.
O resultado final da Listagem 10-3 é que o carro vai girar 180 graus em três segundos, e quando ele é feito, você envia o returnCar mensagem no manipulador de conclusão.
Para devolver o carro à sua posição original, adicione o código em negrito para o returnCar stub em TestDriveController.m.
- (Void) {returnCar Centro CGPoint = CGPointMake (self.view.center.x, self.view.frame.size.height - altura self.car.frame.size) -vazio (^ animação) () =^ () {self.car.centro = centro-} -vazio (^ conclusão) (BOOL) = ^ (BOOL terminado) {[Auto continueRotation] -} -[UIView animateWithDuration: 3 animações: animação conclusão: conclusão] -}
Esta abordagem é praticamente o mesmo que o do testDrive método, exceto que o novo centro é arbitrariamente colocada a 600 pontos abaixo onde o carro se vira. Você colocar o centro de volta através do cálculo da parte inferior da vista
self.car.frame.size.height self.view.frame.size.height-) -
Você pode experimentar com estas fórmulas para ver como mover o carro a vista.
Mas você não está feito ainda. Você precisa girar o carro de volta para sua posição original (a menos que você quiser dirigir no sentido inverso da Califórnia a Nova York). Adicione o código em negrito para o continueRotation stub em TestDriveController.m.
- (Void) {continueRotation CGAffineTransform transformar = CGAffineTransformMakeRotation (0) - vazio (^ animação) () = ^ () {self.car.transformar = transforma- } -[UIView animateWithDuration: 3 animações: animação conclusão: NULL] -}
Você precisa entender que a transformação (neste caso, uma rotação vista) ainda está lá- isto é, você criou uma transformação para girar o carro 180 graus. Se você quiser tirar o carro de volta para a posição original, você precisa voltar a transformar a 0.