苹果发布iOS7之后,iOS7全部采用扁平化的界面,我们的app界面在iOS7上出现了很大的改变,这包括UINavigationBar,UIButton,UIActionSheet,UITabBar等。现在我主要针对这几个功能说明一下在iOS7上的兼容性。
1.UINavigationBar
在iOS7以下所有的UINavigationBar都采用拟物化的界面,给人的感觉很有立体感,但是在iOS7中所有的界面使用的扁平化的界面,这让我们的app在iOS7的系统上看起来不是那么的协调。
把UINavigationBar变为扁平化的就是加一个背景图片
[self.navigationController.navigationBarsetBackgroundImage:navBackImage forBarMetrics:UIBarMetricsDefault];
2.UIButton
在iOS7上出现模糊装的,看起来不是很明显,
UIButton加上边框,代码如下:
button.layer.cornerRadius=8;
heightBtn.layer.borderWidth=1.0f;
heightBtn.layer.borderColor=[UIColorlightGrayColor].CGColor;
这需要引用:
#import <QuartzCore/QuartzCore.h>
3.UIActionSheet
在iOS7上如果在UIActionSheet中加上UIPickerView会显示不完全,原因是在iOS7上显示的高度不够,它是相对与整个屏幕的位置定位的,所以应该修改UIActionSheet显示的高度。
4.UITabBar
在iOS7中如果想隐藏UITabBar只是使用
self.tabBarController.tabBar.hidden = YES;
是会隐藏UITabBar,但是底部会留下阴影,也就是整个屏幕不会全部显示,解决办法是在self.hidesBottomBarWhenPushed = YES;当推送的时候把UITabBar隐藏掉就行了,然后你可以重新设计UIView的大小等等。
代码是navigationBar+tabBar组成的
在viewDidLoad里加了如下代码,
if([[[UIDevice currentDevice] systemVersion] floatValue]>= 7.0)
{
self.edgesForExtendedLayout =UIRectEdgeNone;
self.extendedLayoutIncludesOpaqueBars =NO;
self.modalPresentationCapturesStatusBarAppearance= NO;
self.navigationController.navigationBar.barTintColor=[UIColor grayColor];
self.tabBarController.tabBar.barTintColor=[UIColor grayColor];
}
加了之后UI显示正常了,即没有上移20的高度。
问题是,当运行程序,自动进入到tabBar对应的第一个页面时,navigationBar和tabBar会出现黑色的背景,一小会会消失,才变成自己设置的背景色。
如果注释掉上面代码,进入程序时不会出现黑色背景,但是里面的UI会上移20的高度...
解决方法:
self.navigationController.navigationBar.translucent= NO;
self.tabBarController.tabBar.translucent= NO;
http://www.vinqon.com/codeblog/?detail/11109
苹果发布iOS7之后,iOS7全部采用扁平化的界面,我们的app界面在iOS7上出现了很大的改变,这包括UINavigationBar,UIButton,UIActionSheet,UITabBar等。现在我主要针对这几个功能说明一下在iOS7上的兼容性。
1.UINavigationBar
在iOS7以下所有的UINavigationBar都采用拟物化的界面,给人的感觉很有立体感,但是在iOS7中所有的界面使用的扁平化的界面,这让我们的app在iOS7的系统上看起来不是那么的协调。
把UINavigationBar变为扁平化的就是加一个背景图片
[self.navigationController.navigationBarsetBackgroundImage:navBackImage forBarMetrics:UIBarMetricsDefault];
2.UIButton
在iOS7上出现模糊装的,看起来不是很明显,
UIButton加上边框,代码如下:
button.layer.cornerRadius=8;
heightBtn.layer.borderWidth=1.0f;
heightBtn.layer.borderColor=[UIColorlightGrayColor].CGColor;
这需要引用:
#import <QuartzCore/QuartzCore.h>
3.UIActionSheet
在iOS7上如果在UIActionSheet中加上UIPickerView会显示不完全,原因是在iOS7上显示的高度不够,它是相对与整个屏幕的位置定位的,所以应该修改UIActionSheet显示的高度。
4.UITabBar
在iOS7中如果想隐藏UITabBar只是使用
self.tabBarController.tabBar.hidden = YES;
是会隐藏UITabBar,但是底部会留下阴影,也就是整个屏幕不会全部显示,解决办法是在self.hidesBottomBarWhenPushed = YES;当推送的时候把UITabBar隐藏掉就行了,然后你可以重新设计UIView的大小等等。
代码是navigationBar+tabBar组成的
在viewDidLoad里加了如下代码,
if([[[UIDevice currentDevice] systemVersion] floatValue]>= 7.0)
{
self.edgesForExtendedLayout =UIRectEdgeNone;
self.extendedLayoutIncludesOpaqueBars =NO;
self.modalPresentationCapturesStatusBarAppearance= NO;
self.navigationController.navigationBar.barTintColor=[UIColor grayColor];
self.tabBarController.tabBar.barTintColor=[UIColor grayColor];
}
加了之后UI显示正常了,即没有上移20的高度。
问题是,当运行程序,自动进入到tabBar对应的第一个页面时,navigationBar和tabBar会出现黑色的背景,一小会会消失,才变成自己设置的背景色。
如果注释掉上面代码,进入程序时不会出现黑色背景,但是里面的UI会上移20的高度...
解决方法:
self.navigationController.navigationBar.translucent= NO;
self.tabBarController.tabBar.translucent= NO;
http://www.vinqon.com/codeblog/?detail/11109