你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS Autolayout情況下,ViewController嵌套時,childViewController的Frame異常問題

iOS Autolayout情況下,ViewController嵌套時,childViewController的Frame異常問題

編輯:IOS開發綜合


最近項目中,使用Storyboard、AutoLayout開發,某個ViewController中嵌套了多個子ViewController,結果在將其添加到父ViewController時,出現坐標異常問題;追蹤代碼發現,這是由於AutoLayout狀態下,獲取Frame數據不准確(或時機不對)導致的,網上找了許久,取長補短,搞到了解決辦法,具體如下:

 

分析:

AutoLayout狀態下,執行完viewDidLoad、viewWillAppear等方法後,還會執行viewDidLayoutSubviews方法,而解決問題的關鍵就在這兒。

在這個方法中,我們可以重新對某個子View,甚至某個ChildViewController的View進行Frame調整。

 

示例代碼如下:

- (void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];
    
    self.contentScrollView.contentSize = CGSizeMake(CGRectGetWidth(self.contentScrollView.frame) * 3, CGRectGetHeight(self.contentScrollView.frame));
    
    if (IOS8) {
        
        CGFloat subView_W = CGRectGetWidth(self.contentScrollView.frame);
        
        for (int i = 0; i < 3; i++) {
            
            UIView *subView = [self.view viewWithTag:SubVC_ViewTag + i];
            
            CGRect subViewFrame = subView.frame;
            subViewFrame.origin.x = subView_W * i;
            subView.frame = subViewFrame;
        }
    }
    //iOS7必須執行
    [self.view layoutSubviews];
}

 

注意:這個方法中,若是iOS7,則必須執行

[self.view layoutSubviews];

 

 

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved