2010-09-08 34 views
5

Tôi đang cố gắng thúc đẩy quá trình chuyển đổi trang curl với một UIImageView trong Cửa sổ. Mã này nằm trong phương thức init chính của tôi:Hoạt ảnh chuyển tiếp cuộn trang trên iPhone

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1.5]; 
[UIView setAnimationDelay:delay]; 
[UIView setAnimationBeginsFromCurrentState:YES]; 
[UIView setAnimationDidStopSelector:@selector(animCompleteHandler:finished:context:)]; 
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:splashImage cache:YES]; 

splashImage.frame = CGRectMake(-320, 0, 10, 10); 
//[splashImage removeFromSuperview]; 

[UIView commitAnimations]; 

Vị trí và kích thước hình ảnh động nhưng không bị cong. Nếu tôi bỏ ghi chú số removeFromSuperView nó sẽ biến mất ngay lập tức. Bất kỳ ý tưởng?

UPDATE:

có thay đổi mã để nó sử dụng Lars cách fantasticlly gọn gàng của kích hoạt một hình ảnh động và bao gồm cả hình ảnh động và gọi lại ...

[UIView animateWithDuration:1.5 
         delay:delay 
        options: UIViewAnimationTransitionCurlUp 
       animations:^{splashImage.alpha = 0;} 
       completion:^(BOOL finished){[splashImage removeFromSuperview];} 
]; 

Thật không may là curl trang chỉ không xảy ra . Nó không phai mặc dù.

Tôi không chắc chắn đây có phải là vấn đề liên quan đến cú pháp hay thực tế là SplashImage là một lớp UIImageView trong đối tượng UIWindow của chế độ xem chính của tôi. Có thể nó cần phải ở trong một số UIView để tạo chuyển đổi.

Trả lời

8

Hãy thử một cái gì đó như:

[UIView transitionWithView:splashImage 
     duration:1.5 
     options: UIViewAnimationOptionTransitionCurlUp 
     animations^{ 
      splashImage.frame = CGRectMake(-320, 0, 10, 10); 
     } 
     completion:^(BOOL finished){ 
      [splashImage removeFromSuperview]; 
      //animCompleteHandlerCode.. 
     } 
]; 

Không thử nghiệm và có thể một số lỗi cú pháp, nhưng cung cấp cho nó một thử!

Hoặc có lẽ đây là tốt hơn:

[UIView animateWithDuration:1.5 
     delay:delay 
     options: UIViewAnimationOptionTransitionCurlUp 
     animations^{ 
      splashImage.frame = CGRectMake(-320, 0, 10, 10); 
     } 
     completion:^(BOOL finished){ 
      [splashImage removeFromSuperview]; 
      //animCompleteHandlerCode.. 
     } 
]; 
+0

Tôi chưa thử điều này nhưng tôi bị hấp dẫn bởi mã của bạn! Những gì hiện^làm gì? Đây có phải là cách nhúng chức năng không? –

+1

Đó là các khối mới cho iOS 4.0. Tôi khuyến khích bạn đọc trên các khối. Bổ sung tuyệt vời cho iOS. Kiểm tra điều này: http://developer.apple.com/library/ios/#featuredarticles/Short_Practical_Guide_Blocks/index.html Nếu tôi hiểu mã của bạn chính xác những gì bạn muốn làm là cuộn tròn một trang và đồng thời di chuyển và quy mô nó? – LarsJK

+0

cũng việc di chuyển và mở rộng quy mô không thực sự quan trọng ... Tôi chỉ muốn kích hoạt quá trình chuyển đổi. Đã sử dụng phép biến đổi đó chỉ để kiểm tra nó đang hoạt động. Tôi chỉ cần hình ảnh giật gân để cuộn tròn. Để kích hoạt điều này như là một quá trình chuyển đổi, tôi cần phải làm một cái gì đó để xem. Nó có hoạt động với 'ẩn' không? Dù sao, tôi đang chạy một số xét nghiệm ngay bây giờ. Cảm ơn phản hồi của bạn. –

1

@Larsaronen: Cảm ơn các ví dụ, đó là chính xác những gì tôi cần! Tôi chỉ muốn một trang curl đơn giản trong khi hình ảnh được hiển thị lần đầu tiên, vì vậy tôi đã sử dụng alpha 1.0 thay vì 0 và đặt hoàn thành gọi lại là nil:

// set a page curl animation for the specified UIImageView control 
- (void) setAnimationPageCurl:(UIImageView *)imageView { 

    [UIView transitionWithView:imageView 
         duration:1.5 
         options:UIViewAnimationOptionTransitionCurlDown 
        animations:^ { imageView.alpha = 1.0; } 
        completion:nil]; 
} 
Các vấn đề liên quan