欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

iOS 7 UI Transition Guide  

程序员文章站 2024-03-15 16:54:12
...
重要提示:这是一个初步的为文件API或开发技术提供的文档.虽然已审阅本文件的技术准确性,但这还不是最终版本.这款苹果的机密信息适用于苹果开发者计划的注册会员. 苹果提供了这样的机密信息,帮助你的技术和编程接口的领养计划描述。此信息为改变主题,软件实施测试操作形同根据这个文档,并且得出最终的文档版本.这个文档更新的版本可能会提供API或技术特性未来的种子.
Before You Start
如果你的storyboard,或XIB文件中包含一个嵌入的图像,考虑创建一个出口到图像视图 并且 加载合适的资源的需要。学习如何在代码中加载不同的资产,看到“加载资”源条件。
加载资源条件
在某些情况下,你需要确定你的iOS版本,你的应用正在运行以致你可以恰当修改你的代码.例如,如果一个应用使用明显不同布局的不同版本,你可以下载不同的storyboard或xib为每一个版本.可能你也需要使用不同的编码路径来操作API的差异,像使用barTintColor 代替tintColor 渲染bar的背景.
若果你需要为不同的应用版本下载不同的资源---并且你可以在你的info.plist文件中识别一个storyboard或一个xib文件,你可以代替检查系统版本并加载合适的资源中的应用.
一种方式是找到一个应用是否正在iOS7的系统中运行或更早的是写一个大概的检查系统版本并存储结果,以至于你可以参考它,无论你什么条件下需要下载资源或者使用不同的API.
NSUInteger DeviceSystemMajorVersion();
NSUInteger DeviceSystemMajorVersion() {
static NSUInteger _deviceSystemMajorVersion = -1;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_deviceSystemMajorVersion = [[[[[UIDevice currentDevice] systemVersion]
componentsSeparatedByString:@"."] objectAtIndex:0] intValue];
});
return _deviceSystemMajorVersion;
}
#define MY_MACRO_NAME (DeviceSystemMajorVersion() < 7)
Layout and Appearance(外观和布局)
在iOS7,视图控制器使用全屏幕布局。与此同时,iOS7为您提供了更为精确的控制,通过勾画出一个视图控制器的view。特别是,全屏幕布局的概念已经细化到让一个视图控制器具体地布局到认为每个边缘。

在iOS7中wantsFullScreenLayout视图控制器属性是deprecated(被遗弃的)。如果您目前具体的wantsFullScreenLayout= NO,当它运行在iOS7时,视图控制器可显示其内容在一个意想不到的屏幕位置。

Navigation Bar


要调整视图控制器如何勾画出它的views,UIViewController提供了以下属性:
edgesForExtendedLayout
edgesForExtendedLayout属性使用UIExtendedEdge的类型,指定每一个矩形的四个边,除了指定没有和所有。使用edgesForExtendedLayout指定一个视图的边缘应延长,无论bar半透明。默认情况下,此属性的值是UIRectEdgeAll。

extendedLayoutIncludesOpaqueBars
如果您的设计使用不透明的bar,缩小edgesForExtendedLayout范围也设置
extendedLayoutIncludesOpaqueBars属性为NO。 (默认值
extendedLayoutIncludesOpaqueBars是yes。)
automaticallyAdjustsScrollViewInsets
如果你不想自动调整滚动视图的内容插图,设置automaticallyAdjustsScrollViewInsets为NO。(默认值automaticallyAdjustsScrollViewInsets是YES。)

在iOS7,视图控制器可以支持自定义动画视图间的过渡。此外,您还可以使用
iOS7的API来支持用户交互的动画过渡期间。要了解更多信息,请参阅:
UIViewControllerAnimatorTransitioningProtocolReference 和UIViewControllerInteractiveTransitioningProtocolReference
当app正在运行时, iOS7可以让viewController调整状态栏的风格. 若要启用这个行为,添加
UIViewControllerBasedStatusBarAppearance到app的info.plist文件并给其赋为YES. 一个好的可以动态修改状态栏格式的方式是:设置preferredStatusBarStyle 并且—在动画块更新状态栏外观和调用
setNeedsStatusBarAppearanceUpdate属性
Using Tint Color
在iOS7中,tintColor是UIView的属性. iOS7 app经常使用tintColor定义key的颜色表示元素在整个应用程序的互动性和选择状态. 当你指定给一个view具体的tintColor,tintColor会自动传播到视图层次结构中的所有子视图. 因为inheritsfrom UIView的UIWindow中,您可以指定整个应用程序设置窗口的颜色色调
色彩属性使用这样的代码:
window.tintColor = [UIColor purpleColor];
如果你不指定一个色调为窗口,它使用系统默认的颜色。
默认情况下,视图的色调颜色是空,这意味着视图使用其父视图的色调。这也意味着,当你请求一个视图的色调的颜色,它总是返回一个颜色值,即使你还没有设置。在一般情况下,这是最好的改变视图的视图色调的颜色,而屏幕外。导致恢复使用其父视图的色调,色调的颜色设定为空。

重要的是:环境色调的颜色使用的外观代理的API不支持在iOS7
当Alert或者action sheet出现时,iOS7背后会自动变暗视图的颜色. 为了响应视图的颜色变化, 一个自定义的视图类,用其绘制tintColor,在适当的时候,应重写tintcolordidchange刷新渲染。
The Status Bar
UIStatusBarStyleDefault展示透明底,黑色内容
UIStatusBarStyleLightContent展示黑底白色内容

Search Bar and Scope Bar
iOS7   :  translucent属性默认为YES.
Use tintColor to tint foreground elements.
Use barTintColor to tint the bar background.
iOS6  :  translucent属性默认为NO;
Use tintColor to tint the bar background.


如果你为一个搜索栏,使用UIBarpositiontopattached杆位置创建背景图像,确保图像的高度包括状态栏的高度。
在iOS 7,UISearchdisplaycontroller包括displayssearchbarinnavigationbar属性,
这使您可以将一个搜索栏中的导航栏,类似于“日历”中的一个:

scope bar


Tab Bar

Toolbar

Bar Buttons

在早期版本的iOS,自定义栏按钮艺术被自动视为模板图像。(一个模板图像作为一个遮罩来创建最终的图像。)在iOS 7,您可以使用下面的uiimage性质指定一个自定义的图形应被视为一个模板的图像或是完全呈现:
UIImageRenderingModeAlwaysTemplate.这个image应该被当做临时的image
UIImageRenderingModeAlwaysOriginal. 图像呈现为本身
Image View
一个图像视图显示一个图像或动画系列图像。
在iOS 7,UIImageView包括tintColor属性。当图像视图包含一个临时的image—那就是,图像指定uiimagerenderingmodealwaystemplate渲染模式—tintColor应用于图像。
Map View
mapView介绍了地理数据并支持大多数的内置的地图应用程序提供的功能。照片使用地图视图帮助用户视图位置信息的照片。

在iOS 7,使用新的MKOverlayrenderer类创建一个重叠画在地图视图。
添加一个三维的外观的地图视图,指定一个摄像头的物体,那是MKMapcamera一例—地图视图的相机性能。要了解更多,看到MKMapView类参考。
Page View Controller
在iOS 7,使用pageviewcontrollerpreferredinterfaceorientationforpresentation和
pageviewcontrollersupportedinterfaceorientations方法分别指定优先支持取向。
下面,你可以看到在iOS 7模拟器页面视图控制器的默认外观:

Scroll View
Scroll view 帮助人们看到大于滚动视图边界的内容. iOS7与iOS6唯一的视觉差异是滚动视图之间滚动的外观.

在iOS7中,你可以管理滚动视图,自己插图 通过UIViewController 的属性automaticallyAdjustsScrollViewInsets
Table View
TableView介绍了在单栏多行的list数据
iOS7介绍了几种关于tableview不同style(plain和group)外观的变化



Text View
文本视图接受并显示多行文本
保证使用UIFont的preferredFontForTextStyle方法获取文字展示在textView中
Web View
一个web视图是一个可以显示丰富的HTML内容的区域
在iOS7中,UIWebView支持内容展示分页布局
Controls
controls是用户界面元素,用户可以查看(获取信息)或与(动作)。所有的
iOS 7控制有一个更新的外观,他们中的大多数人也有不同的度量。
因为uicontrol继承UIView,你可以使用一个控制tintColor属性色彩控制。
关于着色视图的详细信息,参见“使用颜色”(原文18页)。
默认情况下,系统提供的controlssupportsystem定义的动画和外观变化表示强调和选择的状态。
Date Picker
日期选择器显示日期和时间的组件,如分钟,小时,天,和年。
日期选择器的整体尺寸在iOS 7是iOS 6相同,但外观非常不同。

iOS 7的应用程序往往嵌入日期选择器在内容而不是显示在一个不同的观点。例如,日历,动态地扩展表格行让用户指定没有离开事件创建时间
视图:

Contact Add Button
添加联系人按钮—是一个UIButtonTypeContactAdd的UIButton类型—让用户添加联系人的信息到textField或者其他基于文本的视图
添加联系人按钮的大小和外观都发生了改变在iOS7中:

Detail Disclosure Button
详细信息按钮—是一种UIButtonTypeDetailDisclosure的UIButton—展示额外的细节或者展示一个表的其他相关功能或视图. 在iOS7中, the Detail Disclosure button 使用相同的符号作为信息按钮.
详细信息按钮的大小和外形都发生改变:

当”详细展示”按钮出现在表格中的一行,点击其他地方不触发这个按钮; 相反,它选择的行或触发应用程序定义的行为
Info Button
一个信息按钮—这是一个UIButtonTypeInfoLight或UIButtonTypeInfoDark的UIButton—揭示配置一个应用的细节,有时在当前视图的后面. 在iOS7中,InfoButton使用相同的符号作为想信息按钮
InfoButton的外观和大小都已经改变在iOS7中:

Label
一个标签显示静态文本。
默认情况下,标签的使用系统字体,所以在ios7和在iOS6看起来不同

确保使用uifont方法preferredfontfortextstyle获得标签中显示的文本。
Page Control

Picker

Progress View

Refresh Control

Rounded Rectangle Button
在iOS7中,使用UIButton中的UIButtonTypeSystem.
类型,而不是iOS6中的UIButtonTypeRoundedRect
Note:在iOS7中, UIButtonTypeRoundedRect应经被重定义成UIButtonTypeSystem.一个在iOS6中应用程序使用UIButtonTypeRoundedRect,当在iOS7中运行时,会自动调用UIButtonTypeSystem
自定义按钮的类型,样式:
UIButtonTypeCustom
Segmented Control

Slider

iOS 7继续使用你的最小和最大的轨道图像和拇指指定色彩,使用性能minimumtracktintcolor,maximumtracktintcolor,和thumbtintcolor。如果你设置minimumtrackcolor属性为nil,该区域以其父类的色彩;如果你设置maximumtracktintcolor或thumbtintcolor属性为nil,这两个区域使用的默认颜色。
Stepper

Switch

Text Field

保证使用UIFont 方法 preferredFontForTextStyle to 获取text来展示在textview中
Temporary Views.
Action Sheet

Alert

Modal View

Document Revision History

http://upyun.cocimg.com/cocoachina/TransitionGuide.pdf