2014-09-10 13 views
17

Tôi hiện đang thử nghiệm các ứng dụng của mình để phát hành iOS 8. Tôi nhận thấy rằng sau khi tôi thực hiện khối hoạt ảnh, hoạt ảnh sẽ đặt lại nếu tôi cập nhật văn bản của bất kỳ nhãn nào. Tôi đã chạy một ví dụ đơn giản với một phương pháp được hiển thị bên dưới. Chạy ví dụ này dẫn đến kết quả sau:Animation Blocks đặt lại vị trí ban đầu sau khi cập nhật văn bản

  • Bấm lần đầu tiên hoạt ảnh nhưng đặt lại khi văn bản nhãn được thay đổi.
  • Nhấp vào myButton lần thứ hai - hoạt ảnh sẽ chạy nhưng không đặt lại về vị trí ban đầu.

Dường như điều này xảy ra vì văn bản nhãn không thay đổi. Nếu tôi xóa hoàn toàn dòng cập nhật văn bản, điều này cũng sẽ ngừng hoạt ảnh từ đặt lại ở cuối.

Tôi muốn sửa lỗi này để khi phương thức chạy, văn bản nhãn có thể được cập nhật mà không cần đặt lại hoạt ảnh.

- (IBAction)move:(id)sender { 

[UIView animateWithDuration:0.4 delay:0.0 
       options:UIViewAnimationOptionBeginFromCurrentState 
       animations:^{ 
        self.myButton.center = CGPointMake(200, 300); 
       }completion:^(BOOL finished){ 

        if(finished){ 
         [email protected]"moved"; 
        } 

       }]; 
} 
+0

cùng một vấn đề ở đây, bất kỳ ai có giải pháp cho điều này? –

Trả lời

16

Sự cố này có thể do đặt Bố cục tự động trên UIView. Nói đúng, nếu bạn đang sử dụng Bố cục Tự động, thì bạn không nên tạo hiệu ứng cho vị trí tuyệt đối của các đối tượng - bạn nên tạo hiệu ứng các ràng buộc của chúng thay vì.

Thay đổi văn bản nhãn khi hoạt ảnh của bạn đang được kích hoạt làm mới bố cục và iOS xáo trộn mọi thứ xung quanh để tuân thủ các ràng buộc chế độ xem ban đầu. (Tôi nghi ngờ đây là một thay đổi hành vi từ iOS7).

Sửa nhanh: bỏ chọn Tự động bố trí trên Chế độ xem và điều này sẽ hoạt động như mong đợi.

+0

Đó là công việc. Tôi không sử dụng bất kỳ ràng buộc nào –

1

Hãy thử điều này. Đặt hình ảnh động mong muốn trong khối kết thúc.

- (IBAction)move:(id)sender { 

    [UIView animateWithDuration:0.4 delay:0.0 
        options:UIViewAnimationOptionBeginFromCurrentState 
        animations:^{ 


self.myButton.center = CGPointMake(200, 300); 
       }completion:^(BOOL finished){ 



     if(finished){ 
         [email protected]"moved"; 
self.myButton.center = CGPointMake(200, 300); 
        } 

       }]; 
} 
+0

Tôi thấy chế độ xem nhấp nháy nếu tôi thực hiện việc này. :/ không thỏa đáng. – fatuhoku

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