1. View會和狀態列重疊(壓在其之下)
2. 按鈕沒有邊框
3. tab bar變為半透明
4. 狀態列的顏色不會與導覽列分開
5. tintColor的影響顏色範圍改變,導覽列與tab bar的顏色不會受到tint Color的影響
ps:經測試,在ios7對於Segmented Control的tintColor,如果使用Global tint,一開始時的框線顏色不會變,但點過後顏色會改變。此時必須去各別設定該元件的tint color才會完整變更顏色
7. 文字樣式明顯不同(即使是相同的設定)
8. 預設會是全螢幕畫面
9. 狀態列的高度不再會影響到整體畫面高度(整體畫面會在狀態列之下)
10. NSBundle Class改變(Chia-Hsin分享)
ios7的pathForResource (NSBundle Class)方法有調整過,
例,Local/iphone/page/01/01.jpg,
ios7之前用:
folder = Local
fileName = iphone/page/01/01.jpg
參數帶入function裡面是OK的~
但現在ios7要改成:
folder = Local/iphone/page/01
fileName = 01.jpg
11. iOS 7 的UITextField會預先給值,iOS 6 不會
if(![username.text isKindOfClass:[NSString Class]]){
NSLog(@”你沒有輸入帳號”);
}
因此這邊在ios7,若使用者沒有輸入任何文字,還是會成立。
12. viewdidload執行順序改變(建議:直接用@property帶值過去,然後在viewWillAppear裡去執行動作)
IOS6的code
ViewController *view1;
iOS7以前, 順序為view1被push出來以後會先執行viewdidload候才會執行[view1 method]
[[self navigationController] pushViewController:view1animated:TRUE];
[view1 method];
而iOS7後變成會先執行[view1 method]才執行viewdidload
目前在push前加viewController.view.hidden = NO;可以解決我現在的問題
Micheal老師建議:本來就是在 View Controller 裡面,去判斷的,不是在你寫的 pushViewController 那段程式碼。你寫的這段的地方,view controller 的 view還沒呈現,所以 view 也沒有值。之前會有值,只是剛好。我們不能決定什麼時候 ViewController 產生 view 的值,我們只知道,在 viewDidLoad 會有 view 的物件,在 viewDidAppear,view 的 frame 會被決定(如果是 storyboard 上的 view 的話)。 再來收到 delegate 回傳值要反應的 view 是 ViewController 的 view 為什不把接收者,設定為 ViewController。
附註:狀態列改變的相關議題
(一)讓上方留狀態列的位置
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 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-20);</code></strong> <strong><code> self.window.bounds = CGRectMake(0, 20, self.window.frame.size.width, self.window.frame.size.height); } return YES; }
(二)座標計算不將狀態列的地方算入
if([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) { self.edgesForExtendedLayout = UIRectEdgeNone; self.extendedLayoutIncludesOpaqueBars = NO; self.modalPresentationCapturesStatusBarAppearance = NO; self.navigationController.navigationBar.translucent = NO; self.tabBarController.tabBar.translucent = NO; self.navigationController.navigationBar.barTintColor =[UIColor grayColor]; self.tabBarController.tabBar.barTintColor =[UIColor grayColor]; }
(三)不顯示狀態列
- 至project setting=>General=>Deployment Info的地方勾選Hide during application launch
- 在ViewController加上
-(BOOL) prefersStatusBarHidden{
return YES;
}
(四)改變狀態列顯示樣子(將字體顯示為白色)
-(UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightContent;
}
相關資料來源: