2009-10-12 18 views
12

Tôi đang sử dụng đoạn mã sau để di chuyển một nhãn từ một vị trí khác trong x hướngLàm thế nào để di chuyển một cái nhìn hoặc nhãn trong x hướng sử dụng CABasicAnimation trong iPhone

CABasicAnimation *theAnimation; 
    theAnimation=[CABasicAnimation animationWithKeyPath:@"transform.translation.x"]; 
    theAnimation.duration=1; 
    theAnimation.repeatCount=1; 
    theAnimation.autoreverses=NO; 
    theAnimation.fromValue=[NSNumber numberWithFloat:0]; 
    theAnimation.toValue=[NSNumber numberWithFloat:80]; 


    [lbl.layer addAnimation:theAnimation forKey:@"animateLayer"]; 

Nhưng trong trường hợp này ở phần cuối của hoạt ảnh nhãn sẽ chuyển về vị trí ban đầu của nó. Làm thế nào để chắc chắn rằng nó vẫn ở vị trí mà nó được di chuyển.

Có cách nào tốt để làm điều đó mà không sử dụng bộ hẹn giờ và tự thay đổi tọa độ.

Trả lời

14

Sau khi hoạt ảnh hoàn tất, nó sẽ bị xóa. Đó là lý do tại sao nó quay trở lại. Thêm ảnh này vào hoạt ảnh của bạn:

theAnimation.removedOnCompletion = NO; 
theAnimation.fillMode = kCAFillModeForwards; 

Điều này sẽ ngăn hình động bị xóa và bảo hoạt ảnh ở trạng thái cuối cùng khi hoàn thành.

+0

tuyệt vời nó hoạt động tốt. – rkb

1

Có 2 mục cần cập nhật tại đây. Lớp trình bày và mô hình. CABasicAnimation chỉ thay đổi lớp trình bày và không bao giờ cập nhật mô hình. Vì vậy, khi lớp trình bày từ hoạt ảnh kết thúc, nó sẽ biến mất và bạn thấy chế độ xem với các giá trị từ mô hình. Bạn chỉ cần cập nhật mô hình với giá trị mới khi hoạt ảnh được thực hiện.

[layer setValue:toValue forKeyPath:keyPath]; 

có một cái nhìn tại một tiện ích tôi đã viết để giúp đỡ với chính xác với điều này, HMBasicAnimation http://hellomihai.wordpress.com/2014/09/02/hmbasicanimation-utility/

sử dụng:

[HMBasicAnimation doAnimation:myView.layer // layer youre updating 
         toValue:myView.frame.size.width/2 // your value 
        duration:1.5 // duration 
       delaySeconds:1 // animation delay (good for chaining animations 
         keyPath:HMBasicAnimation_TRANSLATION_X]; // what you're changing, several available 
Các vấn đề liên quan