• [ios2] ios7UI适配 【转】


    http://blog.csdn.net/toss156/article/details/11843873#comments

    (1)如果应用程序始终隐藏 status bar 那么恭喜呢,你在UI上需要的改动很少很少。

    (2)如果应用程序显示status bar,可以讲status bar设置成黑色不透明 ,然后在UIViewController 中加入下面的判断,

    1. #define IOS7_OR_LATER   ( [[[UIDevice currentDevice] systemVersion] compare:@"7.0"] != NSOrderedAscending )  
    2.   
    3. #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000  
    4.         if ( IOS7_OR_LATER )  
    5.         {  
    6.             self.edgesForExtendedLayout = UIRectEdgeNone;  
    7.             self.extendedLayoutIncludesOpaqueBars = NO;  
    8.             self.modalPresentationCapturesStatusBarAppearance = NO;  
    9.            self.navigationController.navigationBar.translucent = NO;
                 self.tabBarController.tabBar.translucent = NO;
    10.         }  
    11. #endif  // #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000  

     1.在appdeletage里面 添加如下代码:      if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {         [application setStatusBarStyle:UIStatusBarStyleLightContent];         self.window.clipsToBounds =YES;         self.window.frame =  CGRectMake(0,50,self.window.frame.size.width,self.window.frame.size.height-20);      }   2.在info.plist文件里面 属性:View controller-based status bar appearance  值设为NO 接着运行程序,可以看到StatusBar了

    (3)如果勾选了Hide during application lauch 的话,在IOS7 的设备上,是没有问题的,

       启动完以后status bar 会重新出现的,但是在IOS7 一下的设备,需要在launch didfinish 里面把status bar 显示出来。


    (4)可以通过设置view的背景颜色来改变 status bar 的颜色来搭配你的nav 条。

       (5)  有些地方肯能要对版本进行判断,分别做不同的处理。

       (6)  可以用旧版的sdk来编译,这样在真机上还是和原来一样的效果。具体的方法可以参考:http://github.kimziv.com/blog/2013/09/22/how-to-use-older-base-sdks-in-xcode5/

    使用视图控制器(View Controller)
    在iOS 7中,视图控制器都是全屏的。iOS 7视图控制器的外观给人传达了更细腻的控制感。特别是新的全屏外观让你可以指定视图的每个边缘的布局。
     
    视图控制器接口wantsFullScreenLayout已作废。如果你像以前那样地指定wantsFullScreenLayout = NO,iOS 7中视图控制器会在将其内容显示到一个意外的屏幕位置。
     
    UIViewController提供了如下属性来调整视图控制器的外观:
    1.edgesForExtendedLayout这个属性属于UIExtendedEdge类型,它可以单独指定矩形的四条边,也可以单独指定、指定全部、全部不指定。
     
    使用edgesForExtendedLayout指定视图的哪条边需要扩展,不用理会操作栏的透明度。这个属性的默认值是UIRectEdgeAll。
     
    2.extendedLayoutIncludesOpaqueBars:
    如果你使用了不透明的操作栏,设置edgesForExtendedLayout的时候也请将 extendedLayoutIncludesOpaqueBars的值设置为No(默认值是YES)。
     
    3.automaticallyAdjustsScrollViewInsets如果你不想让scroll view的内容自动调整,将这个属性设为NO(默认值YES)。
     
    iOS 7中,视图控制器支持自定义视图之间的过场动画。另外,你可以使用iOS 7的新API来支持过场动画过程中的用户交互。更多信息请参考下面两个文档:《UIViewController过场动画协议参考》和《UIViewController过场交互协议参考》。
     
    iOS 7允许视图控制器在app运行过程中改变系统状态栏的样式。开启这个功能,请在Info.plist文件中添加键 UIViewControllerBasedStatusBarAppearance,并将值设为YES。动态改变系统状态栏的一个好方法是重写 preferredStatusBarStyle方法,用一个动画模块来更新状态栏外观,并调用 setNeedsStatusBarAppearanceUpdate方 法。........................................
     
     
     
    状态栏可以设置成半透明, 这是众所周知的, 用UINavigationController,在页面切换时, 如果你的子viewController的view是全屏的(480*320) 就会出现错位, 表现是所以的子view会向下偏移了 20像素 

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque];

    self.navigationController.navigationBar.translucent = YES;

    [self.navigationController.view setNeedsLayout];

    self.wantsFullScreenLayout = YES;

     

     

     
  • 相关阅读:
    libyuv编译(各平台)【转】
    /dev/mem可没那么简单【转】
    嵌入式Linux上通过boa服务器实现cgi/html的web上网【转】
    linux select函数详解【转】
    dpkg: error processing package bluez (--configure) 解决方法【转】
    Linux内核中的中断栈与内核栈的补充说明【转】
    Linux内核中断引入用户空间(异步通知机制)【转】
    用户空间与内核空间,进程上下文与中断上下文[总结]【转】
    linux 路由表设置 之 route 指令详解【转】
    自己动手做聊天机器人 一-涉及知识【转】
  • 原文地址:https://www.cnblogs.com/jinjiantong/p/3356508.html
Copyright © 2020-2023  润新知