分享

IOS7 遇到的一些问题以及解决

 现在决定明天 2014-03-11

1. 隐藏tabbar出现黑色区域的问题。

IOS7下,想做成tabbar向下滑动隐藏的效果,结果原来的tabbar的地方留下一块黑色区域,网上找了很多办法都没有解决,让我痛恨。无奈,自己定制了一个tabbar来实现滑动隐藏,效果还不错。


2. 打开相册和相机时状态栏不隐藏的问题

IOS7要隐藏状态栏,需要在info.plist文件中添加View controller-based status bar appearance ,并且把值设置为NO。

但是打开相册或相机的时候,状态栏还是透明显示出来了,在网上找了一下解决方案,终于解决了。

在使用了UIImagePickController的controller里或者UIImagePickController的子类里添加如下代码。其中JKIsIOS7OrLater()是判断当前设备的版本号是不是ios7。

- (void)viewWillAppear:(BOOL)animated

{

    [super viewWillAppear:animated];

    if (JKIsIOS7OrLater()) {

        [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO];

    }

}


- (void)viewWillDisappear:(BOOL)animated

{

    [super viewWillDisappear:animated];

    if (JKIsIOS7OrLater()) {

        [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:NO];

    }

}


BOOL JKIsIOS7OrLater(void)

{

    if ([[[UIDevice currentDevice] systemVersion] floatValue]>= 7.0) {

        return YES;

    } else {

        return NO;

    }

}


3. IOS7  UIVIewController 的view的高度问题

devdiv上有这样一段

 之前的版本中UIViewController中的view在显示后会自动调整为去掉导航栏的高度的。这样我们摆放控件的时候就会在导航栏的下面显示。但是在iOS7中UIViewController的wantsFullScreenLayout已经被舍弃了,不再提供此属性,所有的UIViewController创建后默认就是full Screen的,因此如果带导航栏的应用界面中的部分控件会被导航栏覆盖掉。
     要解决这中情况可以使用iOS7中UIViewController新增的属性extendedLayoutIncludesOpaqueBars和edgesForExtendedLayout来解决。其中这个属性指定了当Bar使用了不透明图片时,视图是否延伸至Bar所在区域,默认值时NO。而edgesForExtendedLayout则是表示视图是否覆盖到四周的区域,默认是UIRectEdgeAll,即上下左右四个方向都会覆盖,那么为让顶部不进行延伸到导航栏覆盖的区域,我们可以把顶部区域延伸去掉。实现代码如下:

self.extendedLayoutIncludesOpaqueBars = NO;

self.edgesForExtendedLayout = UIRectEdgeBottom | UIRectEdgeLeft | UIRectEdgeRight;

我在做的时候发现viewDidLoad的时候view的高度还是全屏,viewWillAppear已经去掉navigationbar了,所以frame的设置放在了viewWillAppear中比较准确。

记得这几个,以后遇到再补充。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多