2014-09-17 21 views
8

tôi có một dự án Universal iOS chạy hoàn hảo với Xcode 5 (iOS 6 & iOS 7). Tôi sử dụng bảng phân cảnh khác nhau cho iPad & iPhone.viewDidLayoutSubviews vòng lặp vô hạn với iOS 8

Khi tôi chạy nó với Xcode 6 GM, nó hoạt động hoàn hảo với iPhone nhưng không hoạt động với iPad. Tôi debugged tôi thấy rằng có vấn đề với viewDidLayoutSubviews trong UISplitViewController. Ví dụ:

- (void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; NSLog(@"run"); // some config with frame of child controllers }

Nó chạy liên tục và không dừng.

Bất kỳ ai cũng có cùng sự cố? Xin vui lòng giúp :(

Cảm ơn bạn

Trả lời

2

tôi đã cùng một vấn đề - sử dụng nó để thay đổi kích thước tổng thể/chi tiết trong UISplitViewCtrl

Để thay đổi kích thước tổng thể/chi tiết thử thông số mới này trong iOS8,. trong ví dụ viewDidLoad:

self.minimumPrimaryColumnWidth = 500; 
self.maximumPrimaryColumnWidth = 500; 
self.preferredPrimaryColumnWidthFraction = 1; 
+0

Bạn là người tiết kiệm cuộc sống !!! Cảm ơn –

3

những gì tôi đã nhìn thấy nó mỗi khi bạn thay đổi cách bố trí của các yếu tố của bạn theo quan điểm của bạn nó sẽ gọi các phương pháp sau:

viewWillLayoutSubviews; 
viewDidLayoutSubviews; 

nếu bạn thay đổi thứ gì đó thành cái cuối cùng, nó sẽ gọi lại lần nữa;

2

Mã bạn có bên trong viewDidLayoutSubviews ghi đè cho bộ điều khiển con tự sửa đổi các bản xem trước của chế độ xem, và do đó kích hoạt viewDidLayoutSubviews được gọi lại, và một lần nữa, và một lần nữa.

Để ngăn chặn điều này, hãy thử thêm thuộc tính BOOL vào UISplitViewController để kiểm soát việc thực hiện mã bố trí bộ điều khiển con.

@interface UISplitViewController() 
... 
@property (nonatomic) BOOL subViewLayoutCalled; 
... 
@end 

Sau đó, trong viewDidLayoutSubviews của bạn ...

- (void)viewDidLayoutSubviews { 
    [super viewDidLayoutSubviews]; 
    NSLog(@"run"); 
    if (!self.subViewLayoutCalled) { 
     self.subViewLayoutCalled = YES; 
     // some config with frame of child controllers 
    } 
} 

Nó có giá trị một đi.

Gần đây tôi đã gặp sự cố tương tự.

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