苹果发布iOS7之后,iOS7全部采用扁平化的界面,我们的app界面在iOS7上出现了很大的改变,这包括UINavigationBar,UIButton,UIActionSheet,UITabBar等。现在我主要针对这几个功能说明一下在iOS7上的兼容性。

1.UINavigationBar
在iOS7以下所有的UINavigationBar都采用拟物化的界面,给人的感觉很有立体感,但是在iOS7中所有的界面使用的扁平化的界面,这让我们的app在iOS7的系统上看起来不是那么的协调。
把UINavigationBar变为扁平化的就是加一个背景图片

<ignore_js_op style="-ms-word-wrap: break-word;">

[self.navigationController.navigationBarsetBackgroundImage:navBackImage forBarMetrics:UIBarMetricsDefault];

<ignore_js_op style="-ms-word-wrap: break-word;">

2.UIButton

<ignore_js_op style="-ms-word-wrap: break-word;">

在iOS7上出现模糊装的,看起来不是很明显,

修复办法给
UIButton加上边框,代码如下:

这需要引用:

#import <QuartzCore/QuartzCore.h>

button.layer.cornerRadius=8;
heightBtn.layer.borderWidth=1.0f;
heightBtn.layer.borderColor=[UIColorlightGrayColor].CGColor;

<ignore_js_op style="-ms-word-wrap: break-word;">

3.UIActionSheet
在iOS7上如果在UIActionSheet中加上UIPickerView会显示不完全,原因是在iOS7上显示的高度不够,它是相对与整个屏幕的位置定位的,所以应该修改UIActionSheet显示的高度。
4.UITabBar
在iOS7中如果想隐藏UITabBar只是使用
self.tabBarController.tabBar.hidden = YES;
是会隐藏UITabBar,但是底部会留下阴影,也就是整个屏幕不会全部显示,解决办法是在self.hidesBottomBarWhenPushed = YES;当推送的时候把UITabBar隐藏掉就行了,然后你可以重新设计UIView的大小等等。

4、UITableViewCell
    在之前的版本中UITableViewCell的backgroundColor是透明背景的,但是在iOS7中是默认白色背景,如果在TableView后面加入背景的应用要注意了,在创建UITableViewCell的时候把backgroundColor设置为[UIColor clearColor];

5、UIViewController的变化
     之前的版本中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;

6、无法再获取MAC地址
      在iOS7中无法再获取到MAC地址了,他会固定返回02:00:00:00:00:00。在之前版本中使用MAC地址的应用可能要做调整了。

7、iOS7(Xcode5)中隐藏状态栏的方法
       将4s的系统升级到了扁平化的iOS7,如丝般顺滑,比预想的要完美。很多不经意间发现的小细节让人发出雅典娜之惊叹。所以狗日的不要相信那些媒体的胡说八道,那些人根本就没有体会过即能写出各种奇谈怪论。纸上得来终觉浅,绝知此事需躬行。推荐升级安装。

然后是Xcode5,整个界面也是冲着扁平化的方向,怎么说呢,简约而不简单。总之就是更好用了。赶紧将以前写的一些app放Xcode5下编译,不少问题出来了。

首当其冲就是界面上的状态栏了,iOS7默认程序就是全屏(fullscreen)模式,用半透明的方法将状态栏挡在后面,感觉有点怪怪的

要干掉它还真不容易,在iOS7之前,我们可以这样干:

[[UIApplication sharedApplication] setStatusBarHidden:YES];

但是现在无效了,怎么解?Google了一下,这么干:在app的plist文件中,添加两个属性:UIStatusBarHidden和UIViewControllerBasedStatusBarAppearance,顾名思义,就是用来设置状态栏的,如图所示:
<ignore_js_op style="-ms-word-wrap: break-word;">

ios7控件特性(一)的更多相关文章

  1. 【原创】自己动手写控件----XSmartNote控件

    一.前面的话 在上一篇博文自己动手写工具----XSmartNote [Beta 3.0]中,用到了若干个自定义控件,其中包含用于显示Note内容的简单的Label扩展控件,用于展示标签内容的labe ...

  2. DataGridView控件

    DataGridView控件 DataGridView是用于Windows Froms 2.0的新网格控件.它可以取代先前版本中DataGrid控件,它易于使用并高度可定制,支持很多我们的用户需要的特 ...

  3. DataGridView控件-[引用]

    DataGridView控件 DataGridView是用于Windows Froms 2.0的新网格控件.它可以取代先前版本中DataGrid控件,它易于使用并高度可定制,支持很多我们的用户需要的特 ...

  4. DataGridView控件使用大全说明-各种常用操作与高级操作

    DataGridView控件 DataGridView是用于Windows Froms 2.0的新网格控件.它可以取代先前版本中DataGrid控件,它易于使用并高度可定制,支持很多我们的用户需要的特 ...

  5. DataGridView控件使用大全

    转自:http://www.cnblogs.com/xiaofengfeng/archive/2011/04/16/2018504.html DataGridView控件 DataGridView是用 ...

  6. Windows Phone 8.1 新特性 - 控件之列表选择控件

    本篇我们来介绍Windows Phone 8.1 新特性中的列表选择控件. 在Windows Phone 8 时代,大家都会使用 LongListSelector 来实现列表选择控件,对数据进行分组显 ...

  7. 背水一战 Windows 10 (6) - 控件 UI: 字体的自动继承的特性, Style, ControlTemplate

    [源码下载] 背水一战 Windows 10 (6) - 控件 UI: 字体的自动继承的特性, Style, ControlTemplate 作者:webabcd 介绍背水一战 Windows 10 ...

  8. 控件 UI: 字体的自动继承的特性, Style, ControlTemplate

    字体的自动继承的特性 Style 样式 ControlTemplate 控件模板 示例1.演示字体的自动继承的特性Controls/UI/FontInherit.xaml <Page x:Cla ...

  9. 解决 iOS7 通过tag 找不到 UITableViewCell 的子控件

    当iOS7问世,程序的世界就混乱了,以前良好的程序,现在是一塌糊涂,于是只能把问题一个一个攻破. 由于项目当中需要每个cell显示数目不同的图片,于是我在每个cell 赋值之前,通过一下方法把cell ...

随机推荐

  1. GDB反向调试 + 指令记录+函数历史记录

    http://blog.chinaunix.net/uid-26941022-id-3199961.html b.c void fun(int a, int b){ int c; c=a+b; } v ...

  2. 使用Socket模拟一个简单的Webservice调用

    webservice是对socket的一个封装,让远程调用调用变得更加简单,那么使用socket究竟有多么麻烦呢?来看看. 做一个简单的天气查询: 服务端: public class SocketSe ...

  3. skynet网络库socket-server

    最近在读大神云风的开源服务器架构skynet,其中的网络库,云风已经单独开来,可以独立使用. 开源地址: https://github.com/cloudwu/socket-server 网络库已经封 ...

  4. C#中有关字符串去重的解决方案

    今天在群里看到一个同学的面试题 题目中有一个这样的要求 //本地有个文档文件a.txt里面包含的内容分为一段字符串"abacbacde"请编写一个程序,获取文件得到对应的内容,并对 ...

  5. js基础知识之_流程控制语句

    javascript 流程控制 流程控制:就是程序代码执行顺序 流程控制:通过规定的语句让程序代码有条件的按照一定的方式执行 顺序结构 按照书写顺序来执行,是程序中最基本的流程结构 选择结构(分支结构 ...

  6. sql 嵌套事务学习笔记

    以下内容根据此官方文档修改:http://technet.microsoft.com/zh-cn/library/ms189336(v=sql.105).aspx 嵌套事务的使用场景或者说目的主要是为 ...

  7. js给当前日期加一天

    <script type="text/javascript"> function addDay(datetime, days) { var old_time = new ...

  8. DataGridView 绑定 List

    DataGridView 绑定 List<T> 不会自动更新 正确方式是将  List<T> 设置为 BindingList<T> 即可 (双向绑定)

  9. 标准的最大margin问题

    standard large margin problem 分割线

  10. Data Abstraction

    What is an object? (Page 238) In C++, an object is just a variable, and the purest definition is &qu ...