2011-08-26 4 views
26

Tôi có một số UIImageViews trong một số UIScrollView mà tôi muốn lung lay khi người dùng nhấn và giữ một trong số đó. Vì vậy, tương tự như hành vi bạn nhận được khi bạn nhấn và giữ biểu tượng trong menu iPad/iPhone của bạn.Cách dừng hoạt ảnh UIView

Vì vậy, tôi có như sau:

- (void)startWiggling { 

    for (UIImageView *touchView in [scrollView subviews]) { 

     [UIView beginAnimations:@"wiggle" context:nil]; 
     [UIView setAnimationDuration:0.1]; 
     [UIView setAnimationRepeatAutoreverses:YES]; 
     [UIView setAnimationRepeatCount:FLT_MAX]; 

     //wiggle 1 degree both sides 
     touchView.transform = CGAffineTransformMakeRotation(); 
     touchView.transform = CGAffineTransformMakeRotation(-0.0174532925); 

     [UIView commitAnimations]; 

    }  

} 

- (void)stopWiggling { 
    NSLog(@"Stop wiggling");  
} 

này hoạt động tốt. Vấn đề là ... Làm thế nào tôi có thể làm cho nó ngừng lắc lư sau khi người dùng đã nhấn một nút? Tôi có một nút và kết nối nó vv và nó đạt đến phương pháp stopWiggling, vì vậy đó là tốt. Nhưng như vậy ...

  1. Làm cách nào để xóa hoạt ảnh UIView khỏi các trang UIImageViews này?
  2. Tôi có thể ràng buộc hành động này cho người dùng khi nhấn nút nút Home trên thiết bị của họ không?
+0

Không chắc làm thế nào để trả lời các bit đầu tiên nhưng cách nhấn nút Home sẽ gây ra việc chấm dứt của App để màn hình Home. Không có cách nào để ràng buộc khóa đó bởi vì nó được tổ chức bởi System –

+0

@Suhail Patel mà tôi biết, nhưng tôi nghĩ có thể có cách để ghi đè phương thức 'applicationDidEnterBackground' và kiểm tra xem hình ảnh có đang lúng túng hay không. Và nếu có, hãy ngừng lung và hủy ứng dụng khi vào chế độ nền. Nhưng tôi không biết nếu nó có thể. – Jules

+0

Bạn không thể dừng nó đi vào nền nhưng bạn có thể dừng việc vặn vẹo trong phương pháp đó. Nó không cung cấp cho bạn một lựa chọn ... –

Trả lời

70
#import <QuartzCore/QuartzCore.h> 

sau đó

[myView.layer removeAllAnimations]; 

hoặc

[self.view.layer removeAllAnimations]; 
+1

Ye bạn nói đúng. Tôi biết về phương pháp 'removeAllAnimations' nhưng tôi thậm chí không bận tâm vì tôi đã không đặt hoạt ảnh trên lớp của khung nhìn nhưng trên chính khung nhìn đó. Nhưng đáng ngạc nhiên điều này đã làm việc .. =/ – Jules

+1

quá ngắn, rất hữu ích! – pmk

+0

vấn đề với điều này là nếu bạn muốn tiếp tục các hình động trên cùng một lớp, nó sẽ không hoạt động trở lại khi lớp có tất cả các hình ảnh động bị xóa khỏi nó. –