2013-05-22 29 views
6

Tôi đang cố gắng thực hiện hoạt ảnh UIView nơi hình ảnh của tôi bắt đầu ở trên cùng bên trái của màn hình và mở rộng đến kích thước ban đầu và đặt ở giữa màn hình. Cho đến nay tôi đã có thể làm cho nó làm điều này một cách riêng biệt nhưng khi tôi cố gắng để kết hợp các hình ảnh động này nó sẽ chỉ làm các hình ảnh động quy mô.Làm thế nào để bạn kết hợp hoạt hình dịch thuật và quy mô

Có cách nào tôi có thể thực hiện công việc này với Quy mô và dịch cùng một lúc không?

Dưới đây là những gì tôi có cho đến nay:

CGAffineTransform setpointTrans = CGAffineTransformMakeTranslation(-200.0f, -200.0f); 
CGAffineTransform setpointScale = CGAffineTransformMakeScale(0.0f, 0.0f); 
_RSEImage.transform = CGAffineTransformConcat(setpointTrans, setpointScale); 
[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDelegate:self]; 
[UIView setAnimationDuration:5]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; 
CGAffineTransform scaleTrans = CGAffineTransformMakeScale(1.0f, 1.0f); 
CGAffineTransform lefttorightTrans = CGAffineTransformMakeTranslation(0.0f,0.0f); 
_RSEImage.transform = CGAffineTransformConcat(scaleTrans, lefttorightTrans); 
[UIView commitAnimations]; 

Ok I figured it out, đây là những gì tôi đã thay đổi:

_RSEImage.transform = CGAffineTransformMakeScale(0.0f, 0.0f); 
[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDelegate:self]; 
[UIView setAnimationDuration:5]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; 
CGAffineTransform scaleTrans = CGAffineTransformMakeScale(1.0f, 1.0f); 
CGAffineTransform lefttorightTrans = CGAffineTransformMakeTranslation(200.0f,200.0f); 
_RSEImage.transform = CGAffineTransformConcat(scaleTrans, lefttorightTrans); 
[UIView commitAnimations]; 
+0

Tôi đã thử mã của bạn và nó hoàn toàn làm những gì bạn muốn đạt được: mở rộng và dịch ... Điểm gốc của RESImage trước mã này là gì? – nzs

+0

x 160 y 242, tôi đoán đó là những gì bạn đang hỏi, xin lỗi đây là ứng dụng iphone đầu tiên của tôi. Kích thước hình ảnh là 161 x 71 –

+0

Thật khó để nói từ mã này, nơi bạn có vấn đề bởi vì về cơ bản đoạn mã này đang làm việc, đây là cách bạn làm affine chuyển đổi "sáp nhập". Vì vậy, tôi đoán một số phần khác của mã của bạn ngăn chặn bằng cách nào đó dịch, hoặc không nhìn thấy được ... Bắt đầu thêm các chức năng dần dần bằng cách bình luận ra mọi thứ, và kiểm tra xem cho đến thời điểm đó tất cả mọi thứ là lookin tốt. Ví dụ. kiểm tra đoạn mã này cho 3 dòng đầu tiên với tỷ lệ 0.3f và -100f dịch - bạn thấy img không? sau đó thêm dịch một mình để kiểm tra các params, sau đó hợp nhất với quy mô .. Bạn có thể sử dụng câu trả lời của tôi quá kể từ khi khối được dễ dàng hơn. – nzs

Trả lời

2

Bạn có thể sử dụng điều này, các khối hình ảnh động, cũng (từ iOS4):

[UIView animateWithDuration: 5 
         delay: 0 
        options: (UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction) 
       animations:^{_RSEImage.center = CGPointMake(300, 300) ; _RSEImage.transform = CGAffineTransformScale(CGAffineTransformIdentity, 2.0, 2.0);} 
       completion:^(BOOL finished) { } 
]; 

liên quan doc chính thức ở đây: link

Hướng dẫn tuyệt vời ở đó: link

Hy vọng điều đó sẽ hữu ích!

+0

mà chỉ cần thu nhỏ hình ảnh gấp đôi kích thước của nó, nó vẫn không di chuyển hình ảnh từ góc trên bên trái đến giữa. –

+0

Bắt gặp sự cố lạ ... ;-) Loại _RSEImage là gì, u có thể chia sẻ mã bạn thêm vào chế độ xem không? hoặc bất kỳ mã nào khác liên quan đến _RSEImage? – nzs

+0

Tôi đã tìm ra và chỉnh sửa câu hỏi của mình, tôi sẽ học các khối này, có vẻ dễ dàng hơn nhiều. Cảm ơn sự giúp đỡ của bạn. –

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