如何讓你的App適配iOS7?

隨着蘋果在2013年9月18日發佈iOS7最新的系統以來,iOS各種設備升級到iOS7的數字就已經不斷刷新記錄。目前據外界統計iOS7設備裝機量已經達到2.5億部,已佔iOS設備的64%。由此可見讓自己的app適配到iOS7是如此的重要。下面就說一下采取哪種方法能讓你的app適配iOS7的要求。

第一種,你的app使用自帶的UINavgationController的導航欄

衆所周知,iOS7的標題欄(statusbar)已經和視圖重疊在一起,所以y座標的值有所改變。從而導致原來的app頭部座標向上偏移,而不是顯示在正確的位置。如果你的app使用了下面的特性如下:

那麼恭喜你,你只需要在你的ViewController裏面的ViewDidLoad裏面加入下面這句話就可以完成了適配:

self.edgesForExtendedLayout = UIRectEdgeNone;

然後你的app導航欄和狀態欄的位置就已經恢復正確了。

第二種:你沒有用系統自帶的導航欄而是自己貼視圖(View)模擬成導航欄的樣子:

這種情況你就需要在AppDelegate文件里加入下面的代碼:

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
        [application setStatusBarStyle:UIStatusBarStyleLightContent];
        self.window.clipsToBounds =YES;
        self.window.frame =  CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height);
        self.window.bounds = CGRectMake(0,0, self.window.frame.size.width, self.window.frame.size.height);
        [[NSUserDefaults standardUserDefaults] setFloat:self.window.frame.size.height forKey:@"windowHeight"];
    }

如果你用到了pushViewController的方法,別忘記在目的視圖的ViewDidAppear裏面加入下面的代碼:

-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
        CGRect frame=self.view.frame;
        if (frame.size.height==[[NSUserDefaults standardUserDefaults] floatForKey:@"windowHeight"])
        {
            frame.size.height-=20;
        }
        self.view.frame=frame;
    }
}

這樣你的app也已經完成了適配。其實適配起來也還算蠻方便的。最後展示一下我的app在iOS7下面的效果。

參考資料:

iOS 7 status bar back to iOS 6 style?

適配iOS7開發

適配iOS7開發2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章