2012-05-15 33 views
5

Tôi đang cố gắng tạo hoạt ảnh để thu gọn chế độ xem bao gồm một số bản xem trước.iOS làm động một chế độ xem bao gồm các bản xem trước

[UIView beginAnimations:@"advancedAnimations" context:nil]; 
[UIView setAnimationDuration:3.0]; 

CGRect aFrame = aView.frame; 
aView.size.height = 0; 
aView.frame = aFrame; 

[UIView commitAnimations]; 

Hoạt ảnh này hoạt động tốt, nhưng chỉ cho chế độ aView. Các bản xem trước không sụp đổ như mong đợi. Làm cách nào để làm cho các bản xem lại cũng bị thu hẹp? Hơn nữa, có cách nào để tính toán lại kích thước ban đầu sau khi bị sụp đổ không?

THX

Trả lời

5

Có thể bạn đã quên áp dụng một số mặt nạ tự động hóa cho các bản xem trước của mình. Nếu bạn làm

for (UIView *subview in aView.subviews) { 
    subview.autoresizingMask = (UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleTopMargin); 
} 

nó sẽ hoạt động.

NHƯNG, Cá nhân tôi sẽ sử dụng, như lamelas nói

aView.transform = CGAffineTransformMakeScale(1.0,0.0); 
+0

Vẫn còn tốt, nhưng điều tôi muốn làm là thu gọn chế độ xem, ẩn nội dung của nó khi nó nhỏ hơn. CGAffineTransformMakeScale cân đối toàn bộ nội dung. BTW, bạn không thể sử dụng 0,0 trong biến đổi. – toppless

+0

Bạn thấy rằng chúng ta không thể sử dụng 0.0 trong biến đổi ở đâu? Dù sao, tôi không chắc câu hỏi của bạn là gì… Bạn có muốn các cuộc phỏng vấn của bạn mở rộng hay bạn muốn chúng bị cắt khi hoạt ảnh diễn ra? – Zoleas

+0

Hãy thử đặt nó thành 0.0 và xem hoạt ảnh sẽ trông như thế nào và so sánh nó với cài đặt là 0,001. Tôi buộc phải không thay đổi kích cỡ các bản xem trước, nhưng để có hiệu ứng "cửa trượt", vì chế độ xem chính sẽ nhỏ hơn. – toppless

4

Hãy thử sử dụng này để animate:

aView.transform = CGAffineTransformMakeScale(1.0,0.0); 
+0

+1 Đó là oh đẹp hơn rất nhiều. – Caleb

+0

Hoạt động tốt hơn, nhưng hoạt ảnh hơi lạ - cố gắng "ép" khung nhìn vào điểm giữa. – toppless

0

Một đoán:

[UIView beginAnimations:@"advancedAnimations" context:nil]; 
[UIView setAnimationDuration:3.0]; 

CGRect aFrame = aView.frame; 
aView.size.height = 0; 
aView.frame = aFrame; 

for (UIView *subview in aView.subviews) { 
    CGRect frame = subview.frame; 
    frame.size.height = 0; 
    subview.frame = frame; 
} 

[UIView commitAnimations]; 

Hơn nữa, có cách nào để tính toán lại kích thước ban đầu sau khi bị sụp đổ?

Có thể bạn sẽ chỉ muốn lưu chiều cao trước khi thu gọn.

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