2014-09-17 2 views
8

У меня есть проект Universal iOS, который отлично работает с Xcode 5 (iOS 6 & iOS 7). Я использую разные раскадровки для iPad & iPhone.viewDidLayoutSubviews бесконечный цикл с iOS 8

Когда я запускаю его с помощью Xcode 6 GM, он отлично работает с iPhone, но не работает с iPad. Я отлаживал, я обнаружил, что проблема с viewDidLayoutSubviews в UISplitViewController. Например:

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

Он работает непрерывно и не остановило.

У кого-то такая же проблема? Пожалуйста, помогите :(

Спасибо

ответ

2

У меня была такая же проблема - использовал его, чтобы изменить размер Master/Detail в UISplitViewCtrl

Чтобы изменить размер мастер/подробно попробовать эти новые параметры в ios8,. в, например viewDidLoad:

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

Вы спасатель жизни! благодаря –

3

то, что я видел это каждый раз, когда вы изменить расположение ваших элементов на ваш взгляд, он будет вызывать следующие методы:

viewWillLayoutSubviews; 
viewDidLayoutSubviews; 

Если вы что-то измените на последнее, оно снова вызовет его;

2

Код, который у вас есть в переопределении viewDidLayoutSubviews для дочерних контроллеров, сам модифицирует подзоны представления, и поэтому запускается viewDidLayoutSubviews для вызова снова и снова и снова.

Чтобы предотвратить это, попробуйте добавить свойство BOOL к вашему UISplitViewController для управления выполнением кода макета дочерних контроллеров.

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

Тогда в ваших viewDidLayoutSubviews ...

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

Это стоит идти.

У меня была такая же проблема в последнее время.

Смежные вопросы