如何讓你的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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM