2011-10-28 43 views
5

Tôi đang chuyển đổi từ lập trình iPhone sang ứng dụng Mac gốc. Một phần mà tôi nhớ là sự đơn giản của hệ thống hoạt hình UIView.Cách tạo hoạt ảnh theo phong cách UIView trong phát triển ứng dụng Cocoa/Mac

tôi đã có hai phương pháp sau đây cho một lớp con UIView:

-(void) hide{ 
    _isHidden=YES; 
    [UIView commitAnimations]; 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
    [UIView setAnimationDuration:0.5]; 
    self.alpha = 0; 
    [UIView commitAnimations]; 
} 
-(void) show{ 
    _isHidden=NO; 
    [UIView commitAnimations]; 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
    [UIView setAnimationDuration:0.5]; 
    self.alpha = 1; 
    [UIView commitAnimations];  
} 

Bây giờ tôi không chắc chắn làm thế nào để thực hiện điều này trong Cocoa. Tôi đã thử những điều sau đây nhưng tôi không chắc chắn nó hoạt động như nó phải.

-(void) hide{ 
    [[_myView animator] setAlpha:0]; 
} 

Tôi gọi hàm này (ẩn) nhiều lần trong khi chức năng mờ dần có thể vẫn đang chạy.

Trả lời

15

này nên tạo ra kết quả tương tự như mã iOS của bạn:

[NSAnimationContext beginGrouping]; { 
    [[NSAnimationContext currentContext] setDuration:.5]; 
    [[NSAnimationContext currentContext] setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; 
    [_myView.animator setAlphaValue:0.0]; 
} [NSAnimationContext endGrouping]; 

Thời gian mặc định là 0,25 giây. Tôi không chắc chức năng thời gian mặc định là gì. Nếu bạn đồng ý với các giá trị mặc định, bạn chỉ có thể nói điều này:

[_myView.animator setAlphaValue:0.0]; 
+1

Đừng quên '#import ' –

Các vấn đề liên quan