2011-12-21 32 views
7

Tôi có UIView chứa hai bản xem trước. Tôi muốn thay đổi kích thước khung hình của người giám sát bằng hoạt ảnh và có kích thước của các bản xem lại thay đổi theo mặt nạ tự động hóa của họ.Hoạt ảnh thay đổi kích thước khung hình UIView với tự động xem phụ đề

[UIView beginAnimations:@"Resize" context:nil]; 
[UIView setAnimationDuration:1.0]; 
CGRect frame = self.myView.frame; 
frame.size.height += 30.0; 
self.myView.frame = frame; 
[UIView commitAnimations]; 

Chế độ xem self.myView được thay đổi kích thước trong 1 giây như mong đợi nhưng các bản xem lại đang thay đổi kích thước ngay lập tức. Có ai biết tại sao điều này đang xảy ra và làm thế nào tôi có thể làm cho các subviews animate thay đổi kích thước của họ là tốt?

Từ googling của tôi xung quanh, tôi nghĩ rằng nó có thể có một cái gì đó để với các tài sản contentMode. Thật không may, tôi không thực sự rõ ràng về những gì mà tài sản đó làm. Bất kì sự trợ giúp nào đều được đánh giá cao.

Trả lời

1

OK, vì vậy tôi đã tìm ra vấn đề này sau khi đọc câu trả lời cho những câu dưới đây: Animating a UIView frame, subview UIScrollView doesn't always animate

tôi về cơ bản đã được thực hiện một số công việc sau khi tôi lên kế hoạch các hoạt hình nhưng lại gây - layoutSubviews được gọi trên mỗi subviews của tôi sẽ tự động khiến các lượt xem đó được sắp xếp ở điểm cuối của hoạt ảnh. Bằng cách lên lịch hoạt hình của tôi sau khi công việc này được thực hiện, tôi đã có thể giải quyết vấn đề của mình.

14

Sẽ rất khó cho người khác trả lời đúng nếu bạn thấy mã của mình mặc dù tôi đã hỏi bạn những gì bạn đang làm sau [UIView commitAnimations]. Tuy nhiên, vui vì bạn đã tìm ra nó. Tôi đề nghị bạn sử dụng các hình ảnh động khối. Họ làm cho loại sai lầm này dễ dàng hơn nhiều để tránh bằng cách sử dụng một khối hoàn thành. Ví dụ:

[UIView animateWithDuration:1.0 
       animations:^{ 
        CGRect frame = self.myView.frame; 
        frame.size.height += 30.0; 
        self.myView.frame = frame; 
       } 
       completion:^(BOOL finished){ 
        // whatever you need to do when animations are complete 
       }]; 
+0

Thật không may, cần phải tương thích với các phiên bản cũ hơn của quy tắc iOS trong hoạt ảnh khối. Cảm ơn các mẹo mặc dù. – jjoelson

+1

có ý nghĩa. mặc dù cơ sở cài đặt <4.x là khá nhỏ trong những ngày này. – XJones

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