1

在iOS8中,UISplitViewController已更改,現在通過splitViewController:willChangeToDisplayMode:通知其代表正在進行的displayMode更改。我需要更新我的輔助視圖控制器的某些方面以響應此更改。如何爲顯示模式更改準備一個UISplitViewController輔助VC?

在這個委託方法中調用輔助VC上的方法已經很簡單了,但VC尚不知道它的新邊界是什麼。

除了輔助VC的邊界上的KVO,是否有合理的方式通知VC的邊界將會改變?理想情況下,VC將調用displayMode更改viewWillTransitionToSize:withTransitionCoordinator:,因爲它提供了在轉換旁邊進行動畫處理的功能。

回答

1

所以,現在我只是使用KVO。我遵循了一些建議here

viewDidLoad

[self.view addObserver:self 
      forKeyPath:NSStringFromSelector(@selector(frame)) 
       options:(NSKeyValueObservingOptionOld|NSKeyValueObservingOptionNew) 
       context:nil]; 

然後:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context 
{ 
    if ([object isKindOfClass:[UIScrollView class]] && [keyPath isEqualToString:NSStringFromSelector(@selector(frame))]) { 
     CGRect newFrame = [change[@"new"] CGRectValue]; 
     CGRect oldFrame = [change[@"old"] CGRectValue]; 

     if ((newFrame.size.width == oldFrame.size.width) || (newFrame.size.height == oldFrame.size.height)) { 
      // If one dimension remained constant, we assume this is a displayMode change instead of a rotation 

      // Make whatever changes are required here, with access to new and old frame sizes. 
     } 
    } 
} 

我想這在視圖的邊界,但在框架上開了很多更經常比國際志願者組織。

相關問題