1,首先
//定義宏,判斷ios7 #define IOS7 [[[UIDevice currentDevice]systemVersion] floatValue] >= 7.0 //添加代碼 if (IOS7) { self.edgesForExtendedLayout = UIRectEdgeNone; //視圖控制器,四條邊不指定 self.extendedLayoutIncludesOpaqueBars = NO; //不透明的操作欄
self.modalPresentationCapturesStatusBarAppearance = NO; }
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 if (IOS7) { self.edgesForExtendedLayout = UIRectEdgeNone; self.extendedLayoutIncludesOpaqueBars = NO; self.modalPresentationCapturesStatusBarAppearance = NO; // self.automaticallyAdjustsScrollViewInsets = NO; // self.navigationController.navigationBar.translucent = NO; // self.tabBarController.tabBar.translucent = NO; } #endif
self.automaticallyAdjustsScrollViewInsets = NO;
看這個UIViewController的這個屬性你就明白了,此屬性默認為YES,這樣UIViewController下如果只有一個UIScollView或者其子類,那么會自動留出空白,讓scollview滾動經過各種bar下面時能隱約看到內容。但是每個UIViewController只能有唯一一個UIScollView或者其子類,如果超過一個,需要將此屬性設置為NO,自己去控制留白以及坐標問題。
http://blog.csdn.net/mac_cm/article/details/9234451,這個里面有一些屬性介紹
#define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)
這個是判斷iphone5 or 4
注意,目前我做的適配
如果之前使用了nib文件,同時ui不是自己手寫代碼add上去的,這里需要在代碼里控制每一個ui了(如果你也中槍,那就跟我一樣慢慢改吧,以后寫代碼盡可能手動)
如果是代碼里畫的ui,那么問題不大,做出響應調整即可。
當然如果你不需要兼容ios5.0,這樣可以完全使用autolayout,這樣可以使你的工作量降至最低,如果有不同方法歡迎大家來討論