2013-02-08 15 views
6

Thật dễ dàng, đủ để animate xem:Fade in và fade ra một UIView trong khi nó đang di chuyển

[UIView animateWithDuration:1.0 
        animations:^{theView.center = newCenter; theView.alpha = 0;} 
        completion:^(BOOL finished){ 
         [theView removeFromSuperview]; 
        }]; 

Vấn đề là khi tôi thêm nó như là một subview, tôi muốn nó phai trong và đã tìm như nó đang di chuyển. Ngay bây giờ nó xuất hiện ngay lập tức, sau đó di chuyển và mờ dần.

Vì vậy, tôi cần đặt alpha ban đầu là 0, mờ dần nhanh khi di chuyển, sau đó làm mờ dần. Điều này có thể thực hiện với hoạt ảnh UIView không? Tôi không thể có hai khối hoạt hình cạnh tranh làm việc trên cùng một đối tượng phải không?

+0

Tôi không theo bạn: Địa chỉ mã là điển hình "trượt và mờ dần" ví dụ. Nhưng sau đó bạn nói về "khi tôi thêm nó như là một subview". Bạn đang thêm nó? Hoặc xóa nó? Nhưng, để trả lời câu hỏi của bạn, bạn không cần nhiều khối hoạt ảnh. Nó chỉ là một câu hỏi về những gì bạn đang cố gắng làm. – Rob

+0

Đây là một bài đăng tương tự với rất nhiều câu trả lời hoạt hình hay: http://stackoverflow.com/questions/5040494/objective-c-ios-development-animations-autoreverse – escrafford

Trả lời

12

Tất cả những gì bạn cần làm là áp dụng 2 hoạt ảnh back-to-back. Một cái gì đó như thế này ::

theView.alpha = 0; 
[UIView animateWithDuration:1.0 
       animations:^{ 
        theView.center = midCenter; 
        theView.alpha = 1; 
       } 
       completion:^(BOOL finished){ 
        [UIView animateWithDuration:1.0 
             animations:^{ 
              theView.center = endCenter; 
              theView.alpha = 0; 
             } 
             completion:^(BOOL finished){ 
              [theView removeFromSuperview]; 
             }]; 
       }]; 

Vì vậy, trong 1 giây nó sẽ xuất hiện khi di chuyển và sau đó trong giây tiếp theo nó sẽ mờ dần

Hope this helps

+0

Điều này sẽ hoạt động, mặc dù nó yêu cầu thêm một điểm trung tâm để tính toán. Tôi đã kết thúc bằng cách sử dụng một CABasicAnimation cho phong trào và một hoạt hình UIView cho alpha. – soleil

2

Đặt khối hoạt ảnh alpha = 0 bên ngoài ban đầu.

theView.alpha = 0; 
[UIView animateWithDuration:1.0 
       animations:^{ 
        theView.center = newCenter; 
        theView.alpha = 1; 
       } 
       completion:^(BOOL finished){ 
        // Do other things 
       }]; 
+1

Tác phẩm này mờ dần nhưng tôi không biết tại sao không làm việc cho phai ra. – Envil