비디오: Digital Magic Trick - Android Tutorial 2024
여기에서는 iOS 앱에서보기를 회전 (이 경우 자동차를 돌림)하는 방법을 알아 봅니다. 이렇게하려면 시작한 회전 코드 스텁을 업데이트하고 굵게 표시된 코드로 대체하십시오.
- (void) rotate { CGAffineTransform transform = CGAffineTransformMakeRotation (M_PI); void (^ animation) () = ^ () { self. 자동차 . 변형 = 변환; }; void (^ 완료) (BOOL) = ^ (BOOL 완료) { [self returnCar]; }; [UIView animateWithDuration: 3 애니메이션: 애니메이션 완료: 완료]; }
이 메소드는 블록 선언을 사용합니다.
CGAffineTransform 데이터 구조는 아핀 변환 에 사용되는 행렬을 나타냅니다.
- 한 좌표계의 점들이 다른 좌표계의 점에 매핑되는 방법에 대한 청사진입니다. CGAffineTransform은 좌표계를 스케일링하고 좌표계를 변환하는 등 여러 가지 용도로 사용되지만 목록 10-3에서 사용하는 회전 방법 만 사용할 수 있습니다.
CGAffineTransformMakeRotation (M_PI)
보기를 회전하려면, 좌표계 축을 회전시키는 각도 (라디안)를 지정합니다. 각도는 0에서 360 사이의 숫자이지만 라디안은 비슷하지만 0에서 2π까지의 범위입니다. 따라서 한 반원 주위에서 물체를 회전시키는 회전을 만들면 그 회전 (라디안)은 pi입니다. (M_PI는 pi를 나타내는 시스템 상수입니다.)
Listing 10-3의 최종 결과는 자동차가 3 초 만에 180도 회전하고 완료되면 returnCar 메시지를 완료 핸들러에 보냅니다.
자동차를 원래 위치로 되돌리려면 TestDriveController의 returnCar 메소드 스터브에 굵게 표시된 코드를 추가하십시오. 엠.
- (void) returnCar {CGPoint center = CGPointMake (자기보기, 중앙 x, 자기 모습보기 프레임의 크기는 높이 - 크기 높이); void (^ animation) () = ^ () { self. 자동차. 센터 = 센터; }; void (^ 완료) (BOOL) = ^ (BOOL 완료) { [self continueRotation]; }; [UIView animateWithDuration: 3 애니메이션: 애니메이션 완료: 완료]; } 이 접근법은 testDrive 메소드의 경우와 거의 동일하지만 자동차가 돌아서는 600 포인트 아래에 새로운 중심이 임의로 배치됩니다. 보기
자기의 하단을 계산하여 센터를 되돌립니다. 전망. 틀. 크기. 높이 - 자기.차. 틀. 크기. 신장);
이 공식을 사용하여 자동차를 시야로 이동하는 방법을 시험해 볼 수 있습니다.
하지만 아직 끝나지 않았습니다. 자동차를 원래 위치로 되돌려 야합니다 (캘리포니아에서 뉴욕으로 반대 방향으로 운전하기를 원하지 않는 한). 굵게 표시된 코드를 TestDriveController의 continueRotation 메서드 스텁에 추가하십시오. 엠.
- (void) continueRotation { CGAffineTransform transform =
CGAffineTransformMakeRotation (0); void (^ animation) () = ^ () { self. 자동차. 변형 = 변환; }; [UIView animateWithDuration: 3 애니메이션: 애니메이션 완료: NULL]; } 변환 (이 경우 뷰 회전)이 아직 있음을 이해해야합니다. 즉, 자동차를 180도 회전시키기 위해 변형을 만들었습니다. 자동차를 원래 위치로 되돌리려면 변환을 0으로 되돌려 야합니다.