2009-05-15 27 views
9

Tôi có một "zoom" hoạt hình đẹp và dễ dàng cho một cái nhìn, mà bắt đầu như một dấu chấm và làm sinh động lên đến kích thước màn hình đầy đủ:beginAnimations UIView với subviews

 
     [UIView beginAnimations:nil context:NULL]; 
     [UIView setAnimationBeginsFromCurrentState:YES]; 
     [UIView setAnimationDuration:1.0]; 
     [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
     myView.frame = CGRectMake(0,0,320,480); 
     myView.transform = CGAffineTransformIdentity; 
     [UIView commitAnimations]; 

Cho đến nay rất tốt :-)

Vấn đề là khi tôi thêm các bản xem trước vào myView, tôi ngạc nhiên, họ không tuân theo kế hoạch hoạt hình của superview!?!?

Btw. subviews hiện đang được thêm vào như bình thường trong initWithFrame của MyView. Tôi đã cố gắng để thiết lập tài sản biến đổi của họ để CGAffineTransformIdentity bu nó đã không giúp đỡ.

Vì vậy, những gì cần phải được thực hiện để cho phép một chế độ xem của myView cũng hoạt ảnh trong thời trang "thu phóng" đẹp mắt cùng với người giám sát của nó?

Cảm ơn trước!
/John

+0

Bạn có thêm các bản xem trước sau khi đặt biến đổi trong chế độ xem chính không? Bạn đã thử ẩn chế độ xem chính chưa? – pgb

+0

Có, tôi đã cố gắng thiết lập thuộc tính biến đổi của MainView trước khi thêm subviews (trong phương thức initWithFrame) để không có sự trợ giúp. Điều gì sẽ ẩn MainView làm để giúp giải quyết vấn đề này ?? Vấn đề là các bản xem trước của các trang trình bày MainView trong khi hoạt ảnh thay vì phóng to giống như MainView. –

Trả lời

15

Tôi vừa gặp phải vấn đề tương tự và giải pháp thật dễ dàng một cách đáng ngạc nhiên. Trong khi việc sửa đổi kích thước khung hình chỉ ảnh hưởng đến chế độ xem hiện tại, không phải các bản xem trước (như bạn thấy), thì thuộc tính biến đổi cũng áp dụng cho các bản xem phụ.

Tôi đang cố gắng làm ngược lại những gì bạn đang làm (có một chế độ xem phụ xuất hiện để 'thả' lên đầu màn hình hiện tại khi được hiển thị thay vì thu phóng từ trung tâm). Mã này làm việc cho tôi:

self.transform = CGAffineTransformMakeScale(2,2); 
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.25]; 
self.transform = CGAffineTransformMakeScale(1,1); 
self.alpha = 1.0; 
[UIView commitAnimations]; 

Cố gắng thiết lập self.transform để CGAffineTransformMakeScale (0,0) trước khi bắt đầu hoạt hình, và đặt nó trở lại (1,1) trước khi cam kết. Không sửa đổi khung - hãy để khung ở kích thước bạn muốn xem sau khi hoạt ảnh hoàn tất.

+0

Tôi có thể xác nhận rằng nếu bạn sửa đổi rõ ràng khung hoặc giới hạn trong hoạt ảnh, các bản xem trước sẽ không áp dụng phép biến đổi (dẫn đến thu phóng tìm kiếm) – ohhorob

+0

Tôi biết bài đăng này cũ, nhưng tôi chỉ gặp vấn đề tương tự. Để có được hiệu ứng 'zoom', chỉ cần khởi động CGAffineTransformMakeScale (2,2); CGAffineTransformMakeScale (0,1,0,1); CGAffineTransformMakeScale (0,0) sẽ không hoạt động. – Brett

0

Bạn luôn có thể sử dụng tính năng tự động định kích thước trong trình tạo giao diện. Bằng cách này, bạn có thể chỉ định bên trái/lề mà bạn không muốn thay đổi và trục dọc theo đó bạn muốn xem phụ để thay đổi kích thước.

Autosizing feature

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