iOS 7 UI 过渡指南 - 审视过渡工作的范围

本文翻译自苹果开发者中心文档 iOS 7 UI Transition Guide (Preparing for Transition - Scoping the Project)

了解你的 app 特征及自定义的方式,能让你大致知道应该如何进⾏过渡。使用下面的清单填充上项目的细节,来审视整个过渡工作的范围。

###每个 app 必须做的事情

  • 更新app的icon

    在iOS 7中,app 的图标尺寸在高分辨率的 iPhone 和 iPod touch 上是 120x120 像素,在高分辨率的 iPad 上是 152x152 像素。(了解更多图标大小的详情,请查阅“Icon and Image Sizes”

    注意,iOS 7 不再对 app 的图标进行光照和阴影效果。并且,虽然 iOS 7 依然对 app 的图标加入圆角,但与之前版本的 iOS 采用的圆角相比,弧度发生了一些变化。

  • 更新 app 的加载图像,如果原来的载⼊图像中不包含状态栏部分的话,补充上状态栏部分的图像。

  • 如果你之前没有支持的话,现在应支持 Retina 屏幕和 iPhone 5 的屏幕尺寸。

###每个 app 应该做的事情

  • 确保 app 的内容在透明UI元素(比如透明的 bar 和透明键盘)和透明的系统状态栏下依然可辨识。在 iOS 7 中,视图控制器统一采⽤用了全屏视图(参阅“Using View Controllers”来了解更多)。

  • 重新设计 bar 的自定义图标。在 iOS 7 上,bar 上的按钮图标更加轻巧,且有了不一样的风格。参阅“Bar Button Icons”来了解一些设计指导。

  • 准备采用无边框的按钮,去掉按钮的背景图⽚和边框曲线。

  • 检查 app 中写死的 UI 数值,比如 size 和 position,用系统提供的动态数值替换它们。使用 Auto Layout 帮助你的 app 完成当布局变化时的响应。(如果你还不知道什么是 Auto Layout,请参阅 Auto Layout Guide

  • 检查 app 中使⽤ UIKit 控件的地方,检查尺寸和风格发生变化的控制器和视图是否对布局和外观产生了影响。例如,开关(Switch)变得更宽了,组合式表格(grouped tables)不再是嵌入的样式,进度条变得比以前更细。想要了解更详细的 UI 元素变化,请参阅Bars and Bar ButtonsContent ViewsControlsTemporary Views

  • 使用动态的字体类型。在 iOS 7 中,用户可以自由调整 app 中字体的大小。如果采⽤动态字体,当用户在系统中设定自定义字号的时候,app 的字体也会发⽣生相应的变化。更多信息请参阅Using Fonts

  • 考虑用户从屏幕底部上滑调出控制中心的情况。如果 iOS 检测到一次滑动从屏幕底部开始,那么就会调出控制中心,而不会将这个手势传递给现在运行中的 app。如果 iOS 判断这次触摸不应该调出控制中心,那这次的触摸可能会稍微延迟一会儿才能传递到 app 中。

  • 检查所有用到的阴影、渐变、浮雕效果。由于 iOS 7 的设计重视平面化和层次感,所以应该尽量少的应用会让 UI 元素具有拟物化的视觉效果,你应该重新考虑一下这些效果。

  • 必要的话,将 app 升级到 iOS 6 中的最佳实践⽅法,如 Auto Layout 和 Storyboard,并确保 app 不会用到已不建议使用的 API 。

现在你了解到需要做哪类事情了,了解更多关于视图控制器、着色、字体的变化,请参阅Appearance and Behavior

###如果你必须继续支持 iOS 6

如果你必须同时支持 iOS 6 和 iOS 7 两个系统,你可以在 app 运行的时候检测操作系统的版本,并加载相对应的资源⽂件。更多信息请参阅Supporting iOS 6

iBeacon 的应用案例及巨大价值(译)

本文翻译自 Quora 上 Brian Roemmele 对问题 What are some interesting applications that are enabled by iBeacons technology featured in iOS 7? 的回答

###iBeacon And The Huge Treasure Of Use Cases
作为一个研究员,我发现了 245 个采用 iBeacons 技术的案例。有大约 88 个是支付系统的应用,大约 45 个关注并围绕于微定位技术,其他的是些很有用但表现并不明显的。我自 1999 年开始深入研究这个技术。我在之前对 RFID[1] 和 IrDA[2] 的研究也为我提供了一些研究资料。

我将从 iBeacons 技术的一个概念方面入手,然后我们可以发掘出一系列有趣的应用案例。

非常有趣的是,iBeacons 的商标在 2011 年被确立,然后在 2012 年 9 月 10 日被废弃[3]

符号和短波通讯

1994 年瑞典的冬天,手机制造商爱立信的研究员致力于完善短波频率来建立个人区域网络(Personal Area Network, PAN)[4],希望能用这种技术来替代连接打印机和计算机的 RS-232 线缆。爱立信将这个概念进行了完善,并将这个想法提交到了 IEEE[5] 作为标准的无线电频率协议,后来被蓝牙专家组(Bluetooth Special Group)[6]命名为蓝牙(Bluetooth)。蓝牙的图标是由古日耳曼字符 Hagall 和 Bjarkan 组合而成,有关这个词语的来源还有一个有趣的历史。
蓝牙图标
蓝牙自 2009 年推出 3.0 版本[7],尤其是其中加入了单向广播无连接数据(Unicast Connectionless Data, UCD),使蓝牙变得更加易用,这也成为 iBeacons 技术产生的基础。

随着 2010 年夏天蓝牙 4.0 版本的发布[8],加入了蓝牙低功耗模式(Bluetooth Low Energy, BLE),同单向广播联系在一起,使蓝牙可以完美地成为一个廉价、低功耗的信标。

Apple + Bluetooth

苹果有很长的支持蓝牙的历史。他们有很多专利和专利应用,涵盖了大量的应用案例。自 iPhone 4 之后苹果开始支持蓝牙 4.0 技术标准。iPhone 5s 对于蓝牙的应用更加深入和完善。

后来,在 2012 年夏天,苹果收购了一家叫 Passif 的公司[9]。Passif 找到了一种方法可以从周围所有设备获取到周围的电磁波频率,并用这些能量去驱动小型的 BLE 和智能 NFC 设备。这意味着将来苹果的 iBeacon 将不需要电池,而且会比其他需要电池的 iBeancon 设备更加廉价。整个电路可以被整合为一个名片盒的大小。在大批量生产的情况下,每个单元的成本将会低于 1 美元。

苹果在 2013 年全球开发者大会中宣布 iBeacons 将被集成在 iOS 7 中,并且苹果向开发者开放了部分,而并不是全部的 iBeacons API。由于一些原因,我们在一段时间内对这样做的原因还不得而知。

iBeacons: 二维码的愿景,但比二维码更好

现代、非工业的二维码[10]是为了连接真实世界和互联网世界。二维码的流行程度实际上大大超出了当时的设想。在美国,它甚至成为了最成功的移动钱包,成为了星巴克应用[11]的基础。

星巴克采用二维码获得成功的原因,是在于他们反向地运用了二维码。星巴克使用二维码扫描器,顾客在他们的设备上显示二维码。这就与其他大多数公司采用二维码的方式形成了鲜明的对比,他们都是让顾客使用扫描器比如一个内建相机,而商家提供一个印刷的静态二维码图像。用户的手机必须做很多工作才能保证完成正确的交互。而且 iOS 设备需要一个单独的通用程序来对二维码进行解码,并期望二维码所表述的需求可以被正确执行。

如何扫描二维码

图例:一家公司发布的有关扫描二维码步骤的教程

用户的操作体验十分复杂,他们不得不做以上这所有的操作才能完成,这也是二维码技术的一个巨大问题所在,使二维码技术很难在真实的网络世界中达到应用的爆发点。

二维码技术的缺点和复杂性问题都能被 iBeacons 技术解决。iBeacons 技术带来的用户体验能完全实现二维码的愿景,并且能够超出了二维码的构想。当然,二维码不会消失,依然会在某些行业,如出版印刷业继续服务。

iBeacon 可以替代二维码

商户在他们的零售地点实现 iBeacons 技术可以调用 iOS 7 API 中任意数量的 API 接口,大多数都是为了商业而开发的。当苹果完善了这些 API 之后,也可能发生在操作系统层,这就比仅仅发送一个 ID 到接收设备上能做得更多,使 iBeacons 有了一个巨大的不同。

iBeacon 设备也可以连接到任意数量的其他无线设备和传感器,对所有的信息进行计算并交互然后将其发送回顾客的手机。当然,iBeacon 和顾客的手机能够以前所未有的精度来报告自己的位置。

这样在最简单的零售行业将包含信息的二维码进行替换,iBeacons 会让顾客更容易接入并与信息进行交互,而不需要让他们进行额外的操作。

当企业家和技术人员完全理解它的意义之后,这个技术特性可以带来数十亿美元的市场。

Passbook + iBeacons

苹果必然会将 iBeacon 特性引入到 Passbook 中。通过引入它,顾客只需要站在相应的位置,或者在一个设置好的时间,就可以更快捷地获得打折和其他优惠信息。如果 Passbook 是一家独立的公司,它就一定已经成为了一家被风投估值数十亿美元的公司[12]。当然,Passbook 和 iBeacons 可能会成为未来 iWallet 的基础,但我还不能公开表明 iBeacons 将来将会以多么振奋人心的方式来应用,但我会尽快。最强大的应用目前应该还不明晰。

iBeacons 会产生一个数十亿美元的市场

我们仅仅是接触到了 iBeacons 的一个最基础但也最强大的应用案例,就像我说的,iBeacons 还有许多的应用。有些是非常庞大的系统,有些大公司已经迅速行动来争取占领市场先机,就像 PayPal Beacon[13]。虽然严格来讲那并不是 iBeacon,但它的实现很大胆,很早地在零售支付领域采取了切实的行动方案。PayPal 已经举起了这面技术的大旗,并将在未来一年迅速地将这项技术进行成熟。

有些公司选择去倾听有着商业洞察力和经验的支付领域专家,而且我们已经从哲学角度看到了带来的益处。有些公司则尽可能地不去考虑务实的商业专家和现实情况,并更喜欢选择那些没有经验的非专家,而不去雇用哪些有经验的专家。当我深入表明在零售支付领域 iBeacons 带来的变化时,我们能看到对于创业公司来讲,这种想法是多么不成熟。

创业公司以及在传统公司的开发者都有无限的潜力围绕这种技术去实现各种各样的产品和应用。我已经了解到 50 多家公司在做,还有一些公司在秘密地进行研究。我预言这项技术将会很快带来数十亿的市场。一个创业公司甚至获得了 2013 年 Techcrunch Disrupt 大奖[14]

苹果:不是第一个采用这项新技术的,却是第一个将它变得优雅的

就像苹果的所有技术一样,他们通常不是第一个采用这项技术的,但他们通常是第一个将硬件和软件完美融合,并产生最优雅的用户体验的。iBeacons 技术会被集成在 iOS 7 中,并将与 Touch ID 和 iCloud 密钥串绑定。这种协同增效作用将会使 iPhone 在未来的几年内成为一种独一无二的设备。



参考文献

[1] Radio-frequency identification
[2] Infrared Data Association
[3] IBEACON - Reviews & Brand Information - iBeacon Ramsey, - Serial Number: 85435051
[4] Personal area network
[5] Bluetooth
[6] Bluetooth Special Interest Group
[7] Bluetooth
[8] Bluetooth
[9] Apple + Nikola Tesla Inspired Technology May Change Payments And Maybe The Entire Mobile World by Brian Roemmele on Accepting Payment Cards
[10] QR code
[11] Online and Mobile Payments: What retailer is the most successful in mobile payments?
[12] Almost No One Noticed How Much This One Year Old Has Grown. by Brian Roemmele on Accepting Payment Cards
[13] PayPal Beacons Are Finally Announced by Brian Roemmele on Accepting Payment Cards
[14] real world context for your apps

iOS 7 UI 过渡指南 - 开始之前

本文翻译自苹果开发者中心文档 iOS 7 UI Transition Guide (Preparing for Transition - Before You Start)

开始之前

iOS 7 引入了许多用户界面的新变化,例如无边框的按钮、半透明的控制条(bars)、全屏布局的视图控制器。使用 Xcode 5,你可以创建一个 iOS 7 的工程并且在 iOS 7 模拟器上运行,来看一眼采用 iOS 7 用户界面的应用程序是什么样子的。

例如,下面的图片展示了一个示例工程 TheElements 在不同版本 iOS 模拟器上的区别。

iOS 7 模拟器上的示例程序 iOS 6 模拟器上的示例程序
iOS7 iOS6

看到这个对比,你肯定急切地想要投入到更新自己的应用以适配 iOS 7 的工作中,不过在你开始之前有些事情需要考虑。

当你与内建程序交互时,iOS 7 变化的既细微又巨大之处就变得更加清晰。熟悉的 UI 元素非常易于辨认,但看起来已经与以往有很大不同。真实的虚拟触摸更加优雅,动作的真实性得到增强。

注意:虽然所有 UI 元素的样子在 iOS 7 中都有了很大变化,而且有很多元素有了新的功能,但 UIKit API 几乎与之前保持一致。

当你继续探索时,你会开始觉察到 iOS 7 的主题。

  • 遵从。用户界面会帮助用户理解并了解其内容,而从不争夺用户的眼球。
  • 清晰。文字在所有尺寸下都能清晰显示,图标清晰易懂,装饰优雅适宜,对实用性更多的关注促进了这样的设计。
  • 深度。虚拟的层次和具真实感的运动给用户带来使用上的乐趣,并更加易于理解。

通过在 iOS 体验上引入这些根本而广泛的变化,iOS 7 提供了一个难得的机会让我们重新审视自己的应用程序核心目的是什么,该为用户提供什么功能。虽然你可能还没准备好抓住这个机会,但当你更新你的程序以适配 iOS 7 时请别忘了这一点。(如果你已经准备好重新审视你的应用程序设计,或者你正打算开启一个新的工程,请阅读《Designing for iOS 7》作为参考。)

应用程序的特性

不论你决定重新设计一个应用程序还是更新当前的设计,你需要了解应用程序的特性如何影响这个设计的过程。首先,回答一下几个问题来帮助你明确下一步应该怎么做:

  • 你采用了 Auto Layout 来设计app吗?

    如果你的 app 采用了 Auto Layout,你的工作就变得容易多了。在 Xcode 5 中,Auto Layout 可以帮助 app 适应新的 UI 元素度量,并能对字号动态调整。Auto Layout 对你从 iOS 6 过渡到 iOS 7,以及同时支持两个版本很有帮助。
    如果你没有采用 Auto Layout,现在是开始采用它的好时候了,尤其是如果你需要同时支持多个 app 版本时。如果你采用手动布局或程序化布局技术,你应该确认当文字大小改变时布局能合适地调整。

  • 应用需要支持 iOS 6 吗?
    记住,iOS 的用户会非常快地更新他们的设备,并且期望他们最喜爱的 app 能够跟随潮流。
    如果由于商业原因要求必须支持 iOS 6,开始更新你当前的 app 来适应 iOS 7 依然是最好的选择。然后如果有可能的话,对 iOS 6 版本的 app 运用一些设计上的变化。详情可以参见“Supporting iOS 6”(原文第11页)。

下一步是确定 app 定制的方式。定制的数量,以及你采用的自定义技术,决定了你所需要做的工作的类型。

按照以下三种类型来将你的 app 分类:

  • 标准型。app 只包含了标准的、未经自定义的、由 UIKit 提供的 UI 元素。
  • 自定义型。app 呈现了一个完全自定义的 UI,不包含任何 UIKit 中的 UI 元素。
  • 混合型。app 同时包含了标准的和自定义的 UI 元素,包括那些你通过调用 UIKit 中的色彩和外观设置 API 来自定义的标准元素。、

对于标准型 app,你需要确定你的设计和用户体验设计在 iOS 7 环境下是否依然有效。如果你决定保持现在的布局和交互模式,大部分的工作只是进行微调,来确保 app 可以正确处理系统全局的手势。

对于自定义型 app,也就是没有采用 UIKit 中的 UI 元素的app,在方法上就有些细微差别了。举例来说,如果你感觉当前的 UI 和体验依然合适,可能需要做的工作就很少。另一方面,如果你感觉 app 的风格和用户体验应该进行一些修改,来满足 iOS 7 用户的要求,你可能需要做比较多的工作。

对于混合型 app,需要做的工作量是不一定的,取决于你所做的自定义更改,以及你将自定义内容与标准元素结合的方法。重新审视一个混合型 app 的整体设计时,你需要确保你的自定义内容与新的标准元素集成在一起依然正常并且显示效果不错。

注意:如果你采用了完全自定义的方法来模拟标准 iOS 6 的 UI,可能会需要大量改动的工作,因为它会看起来非常过时。

博客迁移到了 Hexo

越来越多的人希望建立自己的独立博客,独立博客框架也越来越多,比如大名鼎鼎的 Wordpress,我之前也在用它。Wordpress 是个动态的博客框架,基于 PHP+MySQL,功能非常强大但也越来越臃肿,有丰富的的插件、主题、社区资源,不仅可以做个人博客,还被很多企业作为了企业网站的框架。

由于 Wordpress 是个动态框架,必须部署在一台支持 PHP 和 MySQL 的主机上,意味着至少需要租用一台虚拟主机。我之前就是租用了一台虚拟主机,里面仅仅是我访问量极低的博客,感觉有点浪费。更重要的是,对于一个 geek,Wordpress 不够酷,所以我决心换掉它。

调查了一下其他的博客框架,比较有意思的有 Typecho, Jekyll, Octopress, Hexo

Name Slogan Technical
Typecho 轻击键盘,静候回音 PHP5+MySQL/PostgreSQL/SQLite
Jekyll Transform your plain text into static websites and blogs. Ruby
Octopress A blogging framework for hackers. Ruby
Hexo A fast, simple & powerful blog framework, powered by Node.js. Node.js

其中,后面三个都是静态博客框架,原理是把博客内容生成静态的 HTML 网页,最终会是一个全静态的网站,所以只需要放到任意一个支持 HTML 的主机就可以了。而 Github pages 就是一个,这样就得到了一个免费的独立博客。更酷的是,写作博客要用 Markdown 文法,配置博客、发布博客都需要用命令行来完成,对于 programmer 来讲效率和灵活性都更好(主要是看上去也更高端…)。

最终我迁移到了 Hexo,感觉还不错。

用Visual Studio 2010创建集成.Net Framework3.5 SP1的安装包

由于windows7集成的是.Net Framework3.5SP1,还没有集成.Net Framework4,所以我在给别人做东西的时候还是更倾向于基于3.5 SP1。而又要考虑到目前还仍有不少的XP用户,所以即使是采用3.5 SP1,也需要考虑客户机上是不是安装了.Net Framework。

所以在制作安装包的时候,需要将.Net的安装包也集成进去。而Visual Studio2010默认只包含了.Net 4的安装包,所以在生成集成有3.5SP1的安装包时,遇到了一些麻烦。

首先,想要制作一个带有.Net Framework的安装包,需要如下:

Oracle10g更改HOST名的办法

在安装目录的如下位置,找到如下两个文件:

1
2
product\10.2.0\db_1\network\ADMIN\listener.ora
product\10.2.0\db_1\network\ADMIN\tnsnames.ora

将文件中的HOST值改为想要更改的主机名或IP地址即可

在Win7下安装Oracle 10g

Oracle 10g默认是不支持win7的,会在安装环境检测中出错。官方网站只提供了for windows vista/2008的安装包,但完全可以在win7环境下运行。方法如下:

  1. http://www.oracle.com/technetwork/cn/database/10203vista-088351-zhs.html可下载到Oracle 10g 10.2.0.3 for Vista/2k8的企业版
  2. 将下载到的文件(10203_vista_w2k8_x86_production_db.zip)解压,由于10g没有对win7的版本号提供支持,故需要修改以下两个文件:
1
2
db\Disk1\stage\prereq\db\refhost.xml
db\Disk1\stage\prereq\db_prereqs\db\refhost.xml

修改方法相同,均为:
找到以下段落:

1
2
3
4
<!--Microsoft Windows Vista-->
<OPERATING_SYSTEM>
<VERSION VALUE="6.0"/>
</OPERATING_SYSTEM>

并在其后增加如下段落:

1
2
3
4
<!--Microsoft Windows 7-->
<OPERATING_SYSTEM>
<VERSION VALUE="6.1"/>
</OPERATING_SYSTEM>

保存即可

  1. 直接运行setup进行安装即可

达芬奇密码中文站的入口谜题解法

(注:该文章成文于2009年,如今达芬奇密码中文网站已经无法访问)

前几天从表姐那儿借到一本《达芬奇密码》,见其最后印着达芬奇密码中文版官方网站:http://www.davincicode.com.cn,在电脑上敲入网址,却发现摆在面前的竟是一道谜题,想进入网站,须先把谜题破解。

网站首页

进入网站的第三个方式就不用考虑了,我们完全可以自己解决。对于数学或信息学学得比较好的朋友们来说,这个谜题应该很简单。不过肯定也有很多朋友对这个谜题无从下手,感觉很困难,乱点一气也总是赢不了布朗。

大家可以先自己尝试一下,两种方式都不是很难,第二种需要的方法更简单一些。如果不耐烦了或者不想费脑子了,可以往下看。