iOS7给你带来了清新的UI界面。iOS7UI上的改变是iOS历史上最为重大的。iOS7的三大特性
深入理解这些特性是很重要的,因为这可以使你的app达到和系统的app同样水准的UI效果
Clarity, Deference and Depth
Clarity 简单来说就是对用户更加清新。大多数用户都是在碎片化的时间里使用你的app。用户们打开Facebook,接收你的通知或者新闻更新,然后发表一个新动态或者上传新照片,然后关掉app。至少在iPhone上,极少的app是为了长时间使用而设计的。事实上,统计表明大多数的app基本上每次运行80秒左右。这意味着你必须利用有限的时间向用户传达必要的信息,所以你必须在屏幕上清楚的向用户展示最为重要的内容。例如,如果你要开发一个天气app,温度和天气情况是用户最为关心的内容。将你的UI做的足够清新来使这两种信息易于来呈现在用户眼前,而不是需要用户去实际的搜索这些信息。
Deference 意味着系统的UI不会与你的UI相矛盾,相反,系统的UI会顺从着你的app和里面的细节。 这意味着每个app都会拥有属于它自己的风格与外观。在iOS7之前,你的app里面的导航栏和工具栏都是系统提供的。而现在拟物化的风格一去不复返了,取而代之的是半透明的bar来顺从它背后的内容。 系统内置的app都是属于这个风格。而大多数情况下,只是起到一个辅助的作用。
Depth 为iOS7设计的app需要有层次感和深度。控件和内容应该被展现在不同的层级上。这些从iPhone主界面上就能体现得出来。通过视觉差给人的感觉好像icon浮在一个特定的层级上。你可以通过一个alertView看到相似的效果。通知中心和任务中心都是设计得很有层次感和深度。不过它们使用的是半透明效果,而不是视觉差效果,
动画! 动画! 动画!
你看到iOS7的第一眼就会发现拟物化风格彻底被Apple转变成了扁平化风格。
更为重要的是,iOS7默认是会将整个屏幕都交由你来设计,这也意味着状态栏与导航栏融为一体了。
虽然拟物化被摒弃了,但是iOS7增加了物理运动的真实性.从iOS的锁屏界面上可以窥探出这个新特性。尝试着抬起锁屏界面的相机按钮,然后松开,让它从屏幕半空往下掉。你会看到到按钮接触到屏幕底部的时候,屏幕会有弹簧效果出现。如果你将锁屏界面狠狠的从上往下拽的时候,会有更加明显的弹簧效果出现,就想一个真正的东西撞击到地面一样。所以从这个角度说,拟物化并没有完全被iOS抛弃。iOS7之前更多是将UI拟物化,而iOS7则将其体现在物理运动上了。
iOS7仍然有拟物化的痕迹,但不再是图形拟物化了。重点被放到了物理运动拟物化上了,屏幕上的物体遵从物理定律并表现得像真实世界的物体一样了
UIKit Dynamics
在你的app里实现物理效果是很简单的。iOS7有一个全新的类UIDynamicAnimator来达到模仿真实世界物体的效果。你可以创建一个UIDynamicAnimator对象,并将其添加到你的view上。这个view通常来说是你的视图控制器的根视图,同时还会引用一个在UIKit dynamics context的view。这个view的SubViews将会基于附加到它们身上的behavior来表现出真实物体的特性。
Behaviors 需要被添加到子控件身上,事实上,你可以为遵守UIDynamicItem协议的任何对象添加行为。UIView及其子类(包括UIControl)都遵守这个协议。这也意味着你几乎可以给屏幕上的任何控件添加行为。
一个有趣的事情是,UICollectionViewLayoutAttributes是遵守UIDynamicItem协议的,这将使得collection view 元素拥有动态的行为。系统的信息app就是最好的例子。
UIMotionEffect
iOS7中一个全新的类UIInterpolatingMotionEffect,将会很容易的赋予你的app运动效果。将UIMotionEffect作为和CAAnimation相似的一类来看的话,CAAnimation在UILayer层面上产生动画效果,而UIMotionEffect在UIView层面上产生动画效果。与CAAnimation是在时间维度上实现动画不同的是,UIMotionEffect的动画效果是设备运动的维度。
Tint Colors
UIivew有了一个新的属性叫做tintColor。如果view的子控件没有设置只tintColor那么这些子控件将会以父控件的tintColor为准。这意味着你可以通过设置你的app的window的tintColor来全局改变tintColor的值.
在iOS7中,当一个modal视图出现的时候,系统会自动将背景朦胧化。如果你有一个自定义的view并且你使用了父类的tintColor属性来做一些自定义的渲染的话,那么你需要重载tintColorDidChange方法来使更新UI。
Dynamic Type
在iOS7中,用户可以设置文本文字的大小。系统自带的邮件,日历和大多数app都能够动态的改变文字大小。谨记,放大文字并不是总会使文字变大。当文字需要被渲染成更小的大小而导致模糊不清的时候,iOS7会自动加粗文字。为了让你的app拥有动态类型这个新特性,你可以通过修改系统自带的设置里面的用户偏好设置来动态改变文字大小。但是iOS7下的动态类型还有一个缺点,就是不支持自定义的font。