<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Xia Weipin’s Blog</title>
	<atom:link href="http://www.xiaweipin.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.xiaweipin.com</link>
	<description></description>
	<lastBuildDate>Wed, 28 Mar 2012 13:27:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>视图实现圆角效果的三种方法及比较</title>
		<link>http://www.xiaweipin.com/archives/98</link>
		<comments>http://www.xiaweipin.com/archives/98#comments</comments>
		<pubDate>Sun, 26 Feb 2012 15:55:53 +0000</pubDate>
		<dc:creator>weipin</dc:creator>
				<category><![CDATA[Developer]]></category>

		<guid isPermaLink="false">http://www.xiaweipin.com/?p=98</guid>
		<description><![CDATA[三种为视图增加圆角效果的方法，比较优缺点，并附代码。]]></description>
			<content:encoded><![CDATA[<p>首先是没有圆角效果的。</p>
<p><img src="http://www.xiaweipin.com/wp-content/uploads/2012/02/mickey.jpg" alt="" title="mickey" width="256" height="256" class="alignnone size-full wp-image-99" /></p>
<p>然后是带圆角效果的。</p>
<p><img src="http://www.xiaweipin.com/wp-content/uploads/2012/02/rounded_mickey.png" alt="" title="rounded_mickey" width="256" height="256" class="alignnone size-full wp-image-101" /></p>
<p>通过代码，至少有三种方法可以为视图加上圆角效果。附例子：<br />
<a href="https://github.com/weipin/RoundedCorner">https://github.com/weipin/RoundedCorner</a></p>
<p class="large">方法一、layer.cornerRadius</p>
<p>第一种方法最简单，通过层对象的cornerRadius属性实现圆角效果，代码如下：<br />
<code><br />
  view.layer.cornerRadius = 8.0;<br />
  view.layer.masksToBounds = YES;<br />
</code></p>
<p>缺点是会有2次rending passes。首先off-screen画出带圆角的图，然后在视图上画第二次。</p>
<p class="large">方法二、通过UIBezierPath对象设置带圆角的作图区域</p>
<p>这种方法的好处是只有一次rending pass，是三种方法中效率最高的。缺点是需要override视图。代码如下：<br />
<code><br />
- (void)drawRect:(CGRect)rect {<br />
  CGRect bounds = self.bounds;</p>
<p>  [[UIColor whiteColor] set];<br />
  UIRectFill(bounds);</p>
<p>  [[UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:8.0] addClip];</p>
<p>  [self.image drawInRect:bounds];<br />
}<br />
</code></p>
<p class="large">方法三、通过另一张mask图创建新图</p>
<p>首先需要一张mask图，然后将这张mask图和原图合成，得到带圆角的新图。效率和方法一类似，合成新图等同于在off-screen作图。该方法的优点是可以不局限于圆角，全凭mask图控制。</p>
<p class="large">总结：</p>
<p>如果要效率（例如要提高table view的滚动帧数），就多用方法二。要方便，自然是方法一。如果需要的特殊形状UIBezierPath对象无法构成，则考虑方法三。</p>
<p>例子：<br />
<a href="https://github.com/weipin/RoundedCorner">https://github.com/weipin/RoundedCorner</a></p>
<p>例子中，tab 1是无圆角效果，其他三个tab各自对应三种方法。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xiaweipin.com/archives/98/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Symbolicating Crash Log时遇到的若干问题</title>
		<link>http://www.xiaweipin.com/archives/82</link>
		<comments>http://www.xiaweipin.com/archives/82#comments</comments>
		<pubDate>Fri, 10 Jun 2011 03:29:58 +0000</pubDate>
		<dc:creator>weipin</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[iOS开发]]></category>

		<guid isPermaLink="false">http://www.xiaweipin.com/?p=82</guid>
		<description><![CDATA[升级到Xcode 4后，symbolicating开始无法正常工作（Spotlight是能找到archive的）。]]></description>
			<content:encoded><![CDATA[<p>为了看到crash  log中的具体调用方法名（而不只是一个内存的地址），Xcode需要找到和生成该crash log相对应的app程序包以及dSYM文件。这也是为什么要保存好Xcode生成的archive文件。</p>
<p>因为Xcode是通过Spotlight寻找相应文件的，所以Spotlight功能必须打开并能正常工作。在Spotlight里用app的名字查一下看能不能找到对应的archive，可以的话基本就没有问题。</p>
<p>升级到Xcode 4后，symbolicating开始无法正常工作（Spotlight是能找到archive的）。直接用命令行（/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash）执行，可以看到如下错误：</p>
<blockquote><p>Can&#8217;t understand the output from otool ( -> &#8216;\/Developer\/Platforms\/iPhoneOS\.platform\/Developer\/usr\/bin\/otool -arch armv7 -l /Users/xia/Library/Developer/Xcode/DerivedData/FeedVoyager-dcfufspdfglmrfgxqwqtkhgnxfew/Build/Products/Debug-iphonesimulator/FeedVoyager.app/FeedVoyager&#8217;) at bin/symbolicatecrash line 323.</p></blockquote>
<p>看上去是symbolicating找错了文件。Crash来自已经发布的app，不可能是在Debug-iphonesimulator下面。删除Debug-iphonesimulator下的文件并清空回收站后，问题解决（symbolicating能找到正确的archive文件）。</p>
<p>对此的另外三个解决方法是（我倾向第二种）：</p>
<ul>
<li>将~/Library/Developer/Xcode/DerivedData/加入Spotlight的隐私保护目录。</li>
<li>创建一个额外的目录并将其加入Spotlight的隐私保护目录，然后再将symbolicating找错的文件（目录）“移”（move）进去。</li>
<li>坐着干等直到Apple更新Xcode解决这个问题。</li>
</ul>
<p>此外还有两点补充：</p>
<ul>
<li>看上去需要管理员权限的帐号才能让symbolicating正常工作（这点未完全证实）。</li>
<li>可以用ln命令为symbolicating创建一个“连接”，方便使用。比如：</li>
<p><code>ln -s /Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash ~/bin/symbolicatecrash</code></p>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.xiaweipin.com/archives/82/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>三得利、格力还有凡客</title>
		<link>http://www.xiaweipin.com/archives/75</link>
		<comments>http://www.xiaweipin.com/archives/75#comments</comments>
		<pubDate>Thu, 19 May 2011 16:14:36 +0000</pubDate>
		<dc:creator>weipin</dc:creator>
				<category><![CDATA[随笔]]></category>

		<guid isPermaLink="false">http://www.xiaweipin.com/?p=75</guid>
		<description><![CDATA[这是一篇很俗很偏的文，和编程无关，和苹果也无关。我保证，像这样的烂文，不会常有。

这也是一篇口味很“重”的文，好在没什么人会看到。但还是要就此声明：请注意，以下仅代表个人意见。

其实和这个社会当下发生的种种相比，这些算个屁。]]></description>
			<content:encoded><![CDATA[<p>这是一篇很俗很偏的文，和编程无关，和苹果也无关。我保证，像这样的烂文，不会常有。</p>
<p>这也是一篇口味很“重”的文，好在没什么人会看到。但还是要就此声明：请注意，以下仅代表个人意见。</p>
<p>其实和这个社会当下发生的种种相比，这些算个屁。</p>
<p>正文开始。</p>
<p class="large">三得利</p>
<p>让我们回到，大约是96年的上海。当时垄断上海啤酒市场的是力波啤酒，本地品牌。去哪儿买啤酒都能看到力波。我猜和北京的燕京是差不多的情况。三得利没用多长时间就打败力波。去哪儿买啤酒都能看到三得利。三得利也是在上海第一个用飞艇打广告的主体（据说）。</p>
<blockquote><p>96年11月至97年5月日本三得利公司，以千余万人民币的预算，在上海利用飞艇广告做了六个月的品牌飞行，使其在知名度和销售量有100％以上的提升，一举打开上海及华东市场，并至今保持上述地区的龙头企业地位和优势。 </p></blockquote>
<p>你看，至此我对三得利都没什么意见，但也没什么好感。我有个亲戚在三得利做事，刚开始那会，去外面吃饭他就让喊三得利啤酒，所以我是喝过不少的。</p>
<p>随后更多的啤酒品牌进入上海市场，其中不乏高端品牌。三得利逐渐将自己定位在中低端的位置（仅指啤酒，且是个人判断）。前不久，三得利请了一位“创始人”做形象代言人，请看：<br />
<a href="http://www.xiaweipin.com/wp-content/uploads/2011/05/3aaaf9dfbe251cf95277508b401b271e.gif"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/05/3aaaf9dfbe251cf95277508b401b271e-300x185.gif" alt="" title="3aaaf9dfbe251cf95277508b401b271e" width="300" height="185" class="aligncenter border padsmall" /></a></p>
<p>也许三得利的意思是：1）巩固低端品牌的形象。 2）嘲讽老敌人“力波”啤酒。</p>
<p class="large">格力</p>
<p>我对格力的印象也一直是不错的，格力的女老板从“站柜台”的销售到带领格力走到现在这个规模的故事；格力抵抗连锁家电卖场的潜规则，自己建立渠道的故事，等等，都让我觉得这个牌子很精神。直到最近，格力请了这位当代言人，口号是“核心科技”：</p>
<p><a href="http://www.xiaweipin.com/wp-content/uploads/2011/05/格力.jpg"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/05/格力-217x300.jpg" alt="" title="格力" width="217" height="300" class="aligncenter border padsmall" /></a></p>
<p>嘛核心科技？俺不懂；嘛世界名牌？用自己喊的吗，俺不懂。</p>
<p>这位什么都代言的“大哥”，从低端的有浓浓脑白金味道的某品牌洗发水，到高端的数码相机，乃至世博会，什么都代。而且他和刘翔一样，是一位很靠拢x的艺人，是x的“代言人”（其实只要有机会，我也是会当x的代言人的）。就是这样一位，你说你格力请他来当代言人？请他摆个翘大拇指的姿势？这个广告，让我隐约感到格力内部也许发生了什么，才会在外部有这样的精神表现，启用这样的广告。另一种可能是，格力的某个部门，或是某个决策人觉得脑白金味道的广告才会有效，翘大拇指的直白老百姓才能懂。</p>
<p>据说格力没有像其它家电企业那样进入房地产，这样的企业文化和其广告之间的差异很大。</p>
<blockquote><p>
专访董明珠：格力未入房地产 续走专业化。有人传言说格力进入了房地产，但事实上我们没有进入，我觉得我要静下心来，坚持一个吃亏的精神，宁可少赚，我也要在这个行业里做到最精，做的最好。如果房地产中1平米赚几千块钱，回过头来一台冰箱赚几十块钱，那么心静不下来。可能我的产值在某个时间段来讲，没别人多，但我具有竞争力。
</p></blockquote>
<p>什么样的产品，基本上就会有什么样的广告。参见Apple系广告，Nike系广告。</p>
<p>下次买空调的时候&#8230;格力&#8230;我会考虑的。</p>
<p class="large">凡客诚品</p>
<p>总能在网上看到他们的广告，还有所谓凡客体。虽然他们声明，凡客体是网友自发的行为。我有次在上海的地铁里看到过凡客体的灯箱广告，如果不是网友对这个品牌的钟爱超越了在苹果专卖店门口彻夜排队等买iPhone4的果粉，就是这东西从一开始就是广告企划。凡客诚品是很看重网络营销的，PPG的尸体告诉陈年，和电视广告相比，网络营销才更有效。以上种种，我没有意见。</p>
<p>其实我的问题是：凡客诚品你们作为一家面向中国消费者的B2C电商企业，启用的外国模特能再多点吗？我看到还有若干亚洲人的面孔，不如也都换成老外吧。由此而来的第二问题是：在老外衣架子展示下的各色服饰，是如何勾起各位同胞的购买欲望的？</p>
<p><a href="http://www.xiaweipin.com/wp-content/uploads/2011/05/Screen-shot-2011-05-19-at-11.39.44-PM.png"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/05/Screen-shot-2011-05-19-at-11.39.44-PM-300x175.png" alt="" title="Screen shot 2011-05-19 at 11.39.44 PM" width="300" height="175" class="aligncenter border padsmall" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xiaweipin.com/archives/75/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bootable backup won’t boot on new Mac [Solved]</title>
		<link>http://www.xiaweipin.com/archives/61</link>
		<comments>http://www.xiaweipin.com/archives/61#comments</comments>
		<pubDate>Mon, 09 May 2011 07:45:31 +0000</pubDate>
		<dc:creator>weipin</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[In English]]></category>
		<category><![CDATA[Mac OS X]]></category>

		<guid isPermaLink="false">http://www.xiaweipin.com/?p=61</guid>
		<description><![CDATA[Last week, I retired my old Macbook Pro. So I used SuperDuper! to make the last bootable backup, copied it to the new MBP and tried to boot it. After waiting a while, it failed. The bootable backup wouldn’t boot on the new MBP: the Apple logo was frozen on the gray screen.
]]></description>
			<content:encoded><![CDATA[<p>Short version: in order to solve the problem, I installed Mac OS X on to the bootable backup, with the Mac OS X Install DVD which comes with the new Mac.</p>
<p>And yeah, I got my new MBP.</p>
<p>Update: A few days later after the initial post, I found the exactly same <a href="http://stackoverflow.com/questions/5838409/xcode-4-archive-ipa-error-the-operation-couldnt-be-completed-no-such-file-or">XCode 4 Archive/IPA Error: “The operation couldn’t be completed. No such file or directory”</a>. Uninstalling and reinstalling XCode worked!</p>
<p>Here is the long version: </p>
<p>I use <a href="http://www.shirt-pocket.com/SuperDuper/SuperDuperDescription.html">SuperDuper!</a> to make a bootable copy every week. Using SuperDuper!’s “Smart Update”, it normally takes 10 to 15 minutes to update an existing clone.</p>
<p>Last week, I retired my old Macbook Pro. So I used SuperDuper! to make the last and latest bootable backup, copied it to the new MBP and tried to boot it. After waiting a while, it failed. The bootable backup wouldn’t boot on the new MBP: the Apple logo was frozen on the gray screen.</p>
<p><a href="http://www.xiaweipin.com/wp-content/uploads/2011/05/Pastebot-2011-05-09-09.23.11-AM.jpg"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/05/Pastebot-2011-05-09-09.23.11-AM-300x224.jpg" alt="" title="boot failed" width="300" height="224" class="aligncenter border padsmall" /></a></p>
<p>What happened? To know exactly which step choked the starting up, I rebooted the system in <a href="http://support.apple.com/kb/HT1492">verbose mode</a> (pressing Command-S), the output stopped at: </p>
<blockquote><p>Loading System\Library\Caches\com.apple.kext.caches\Startup\Extensions.mkext&#8230;</p></blockquote>
<p><a href="http://www.xiaweipin.com/wp-content/uploads/2011/05/Pastebot-2011-05-09-09.22.22-AM.jpg"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/05/Pastebot-2011-05-09-09.22.22-AM-300x224.jpg" alt="" title="reboot" width="300" height="224" class="aligncenter border padsmall" /></a></p>
<p>The file extension mkext stands for <a href="http://developer.apple.com/library/mac/#documentation/Darwin/Conceptual/KEXTConcept/KEXTConceptIntro/introduction.html">kernel extension</a>. I guessed it could be the hardware differences between the old MBP and new one (Cure Duo 2 vs. Core i7), which failed the kernel extension loading. I ended up installing Mac OS X on to the bootable backup, with the Mac OS X Install DVD which comes with the new Mac. The installation process took about 30 to 45 minutes to complete. The problem was solved and my original data was all retained. Otherwise I would have had to reinstall all the applications and then reconfigure them; a nightmare and waste of time.</p>
<p>Hope my experience can be of help.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xiaweipin.com/archives/61/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>镜像备份在另一台Mac无法启动的问题【已解决】</title>
		<link>http://www.xiaweipin.com/archives/55</link>
		<comments>http://www.xiaweipin.com/archives/55#comments</comments>
		<pubDate>Mon, 09 May 2011 02:54:23 +0000</pubDate>
		<dc:creator>weipin</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Mac OS X]]></category>

		<guid isPermaLink="false">http://www.xiaweipin.com/?p=55</guid>
		<description><![CDATA[上周，我的老款Macbook Pro退役了。我用SuperDuper!为她做了最后一次镜像备份，将备份导进新的MBP（2011款），启动。一番等待后迎来的是启动失败：屏幕显示苹果的logo，然后就没有动静了。]]></description>
			<content:encoded><![CDATA[<p>简单地讲，解决方法是：在镜像备份之上，用随机附带的Mac OS X Install DVD，重新安装系统。</p>
<p>更新：之后在使用XCode时发现，<a href="http://stackoverflow.com/questions/5838409/xcode-4-archive-ipa-error-the-operation-couldnt-be-completed-no-such-file-or">无法将archive生成为ipa文件</a>。<a href="http://stackoverflow.com/questions/5838409/xcode-4-archive-ipa-error-the-operation-couldnt-be-completed-no-such-file-or">按文中指引</a>，删除Xcode并重新安装后，问题解决。</p>
<p>我有用<a href="http://www.shirt-pocket.com/SuperDuper/SuperDuperDescription.html">SuperDuper!</a>做镜像备份的习惯，每周一次。一般情况下，用&#8221;Smart Update&#8221;模式，10多分钟即可。</p>
<p>上周，我的老款Macbook Pro退役了。我用SuperDuper!为她做了最后一次镜像备份，将备份导进新的MBP（2011款），启动。一番等待后迎来的是启动失败：屏幕显示苹果的logo，然后就没有动静了。</p>
<p><a href="http://www.xiaweipin.com/wp-content/uploads/2011/05/Pastebot-2011-05-09-09.23.11-AM.jpg"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/05/Pastebot-2011-05-09-09.23.11-AM-300x224.jpg" alt="" title="boot failed" width="300" height="224" class="aligncenter border padsmall" /></a></p>
<p>怎会这样，SuperDuper!的问题吗？在选用 SuperDuper!前，我是做足功课的，而且之前没有出过类似的问题。</p>
<p>为了知道启动卡在了哪个步骤，我用<a href="http://support.apple.com/kb/HT1492?viewlocale=zh_CN">详细模式</a>重新启动了MPB（启动时按住Command+S），输出停在了：</p>
<blockquote><p>Loading System\Library\Caches\com.apple.kext.caches\Startup\Extensions.mkext&#8230;</p></blockquote>
<p><a href="http://www.xiaweipin.com/wp-content/uploads/2011/05/Pastebot-2011-05-09-09.22.22-AM.jpg"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/05/Pastebot-2011-05-09-09.22.22-AM-300x224.jpg" alt="" title="reboot" width="300" height="224" class="aligncenter border padsmall" /></a></p>
<p>文件后缀mkext代表<a href="http://developer.apple.com/library/mac/#documentation/Darwin/Conceptual/KEXTConcept/KEXTConceptIntro/introduction.html">kernel extension</a>。也许是因为新老MBP的硬件差异（Cure Duo 2 vs. Core i7），导致载入kernel extension失败。几番尝试后，最终的解决方法是：用随机附带的Mac OS X Install DVD，在镜像之上再次安装系统（大概30-45分钟）。问题解决，原有数据也得以保留，否则不知道还要花多少小时在重新安装和配置上。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xiaweipin.com/archives/55/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iOS UXD 思考练习（一）</title>
		<link>http://www.xiaweipin.com/archives/44</link>
		<comments>http://www.xiaweipin.com/archives/44#comments</comments>
		<pubDate>Sun, 01 May 2011 17:02:21 +0000</pubDate>
		<dc:creator>weipin</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[HIG]]></category>
		<category><![CDATA[iOS App]]></category>
		<category><![CDATA[iOS开发]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[UXD]]></category>

		<guid isPermaLink="false">http://www.xiaweipin.com/?p=44</guid>
		<description><![CDATA[支付宝的iPhone客户端几天前有了一个大的升级，很有诚意的从Web版本（印象里是）进化到了原生app，给人第一印象很不错。从界面和美工可以看得出，开发团队是花了心思的。接下来的几天里，又陆陆续续“研究”了一下，看到了一些需要改进的地方。我相信客户端的团队一定有他们的设计理念，且我对app的功能也没有足够的了解，这里只是一些初步的，很个人的想法。就HIG方面的问题，罗列如下：]]></description>
			<content:encoded><![CDATA[<p>UXD: <a href="http://en.wikipedia.org/wiki/User_experience_design">User experience design</a> &#8211; 用户体验设计</p>
<p><a href="http://www.xiaweipin.com/wp-content/uploads/2011/05/Screen-shot-2011-05-01-at-10.01.10-PM.png"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/05/Screen-shot-2011-05-01-at-10.01.10-PM-150x150.png" alt="" title="支付宝" width="150" height="150" class="alignleft order padsmall" /></a></p>
<p><a href="http://itunes.apple.com/us/app/id333206289?mt=8">支付宝的iPhone客户端</a>几天前有了一个大的升级，很有诚意的从Web版本（印象里是）进化到了原生app，给人第一印象很不错。从界面和美工可以看得出，开发团队是花了心思的。接下来的几天里，又陆陆续续“研究”了一下，看到了一些需要改进的地方。我相信客户端的团队一定有他们的设计理念，且我对app的功能也没有足够的了解，这里只是一些初步的，很个人的想法。就HIG方面的问题，罗列如下：</p>
<p class="large">App的图标不支持Retina</a></p>
<p>这是个很小的，但是很低级的错误。苹果对<a href="http://www.xiaweipin.com/archives/28">iOS app的图标规范</a>有一个很清楚的技术文档：<a href="http://developer.apple.com/library/ios/#qa/qa1686/_index.html">Technical Q&#038;A QA1686: App Icons on iPad and iPhone</a>。而且这也应该是测试列表中的一项，不应遗漏。诡异的是招商银行的iPhone客户端，第一次上架的版本也有同样的问题：明明app里面的图标都是Retina的，但app自己的图标却是模糊版本。</p>
<p class="large">另类的App状态栏－－网站设计思维的延续</p>
<p><a href="http://www.xiaweipin.com/wp-content/uploads/2011/05/bar.png"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/05/bar-300x47.png" alt="" title="bar" width="300" height="47" class="aligncenter border padsmall" /></a></p>
<p>客户端顶部会始终显示一个状态栏，作用如下（大致的）：</p>
<ul>
<li>未登录状态，显示“登录支付宝”按钮，点击后，显示登录界面。这时有两个选择：</li>
<ol>
<li>取消登录（点击状态栏中的“关闭登录”按钮），回到原来的界面。</li>
<li>登录，成功后回到原来的界面。</li>
</ol>
<li>已登录状态下，状态栏的按钮文字变为“你有 %d 条提醒”。点击后进入一个新的界面，列出所有的提醒消息。</li>
</ul>
<p>这基本上是一个网站设计的惯性思维：在网页顶部放置一个“用户模块”，在“未登录”和“已登录”状态下，分别显示不同的内容，执行不同的动作。</p>
<p>并不是说这样的设计不好，但我们有更好的选择。在列出更“标准的”选择前，先试着总结一下目前这个设计的优缺点：</p>
<p>优点：</p>
<ol>
<li>未登录状态下，可以随时“一键”进入登录界面（但似乎这个“手动”功能不是必须的）。</li>
<li>已登录状态下，可以随时看到“有几条提醒”。</li>
</ol>
<p>缺点：</p>
<ol>
<li>占用额外空间。</li>
<p>我们已经有一个系统的状态栏（显示时间的那个），支付宝的app像是又加了第二个。其左侧的空间也没有用处（暂时），为了“填空”而显示的那个支付宝logo其实是一个花瓶（冗余元素）。</p>
<li>按钮很“矮”，可能不容易点到。</li>
<p>状态栏的高度不可能很大，这导致状态栏右侧的按钮会很“矮”。我点下来是OK的，但难保别人会有困难。<a href="http://developer.apple.com/wwdc/">苹果的WWDC</a>，以及其它一些零星的文档，有提到过一个比较合适的点击区域大小是44&#215;44（单位pt）。从截图看，支付宝的这个状态栏高度是29pt的样子。
</ol>
<p>更理想的设计，是取消这个状态栏，然后将对应的功能分散至其它界面。以下是各个功能的对应：</p>
<ol>
<li>未登录状态下，可以随时“一键”进入登录界面。</li>
<p>在进入某些界面，或是执行某些操作，需要用户登录的时候，自动弹出登录界面。因为当前版本的app已经有这样的逻辑，所以其实就是取消用户手动登录的功能。</p>
<li>已登录状态下，可以随时看到“有几条提醒”。</li>
<p>首先将显示“提醒消息”的界面和Tab Bar上的“帐户管理”界面合并。然后通过UITabBarItem的badgeValue属性，让用户知道“有几条提醒”。这是很“苹果标准”的实现（因为我的提醒一直是0条，所以不知道客户端是否已经使用了badgeValue）。
</ol>
<p>这样，旧版设计的功能基本都有保留（除了用户不能手动登录），用户也不用在意顶部的状态栏。集中在一起的“帐户管理”和“提醒消息”也更容易理解，使用起来也会更方便。</p>
<p class="large">诡异的双面“应用中心”</a></p>
<p>客户端有两个“应用中心”界面，它们有着类似的功能，但外观差别很大。暂且将其称为“界面A”和“界面B”。</p>
<ol>
界面A：未登录状态下，关闭登录界面时出现。<br />
界面B：已登录状态下，点击Tab Bar上的“应用中心”时出现。
</ol>
<p>即，在不同的登录状态下，会对应不同的“应用中心”界面。这不是一个好的设计，因为会让用户困惑。而且A和B虽然有着相同的应用，排列顺序却又不同。也许界面A是为了对应“不登录也能支付”这个功能，但好像还是没有足够的理由要用两套界面。</p>
<p>界面A：</p>
<p><a href="http://www.xiaweipin.com/wp-content/uploads/2011/05/照片-3.png"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/05/照片-3-200x300.png" alt="" title="b" width="200" height="300" class="aligncenter border padsmall" /></a></p>
<p>界面B：</p>
<p><a href="http://www.xiaweipin.com/wp-content/uploads/2011/05/照片.png"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/05/照片-200x300.png" alt="" title="a" width="200" height="300" class="aligncenter border padsmall" /></a></p>
<p class="large">当下没有必要，将来又难以扩充的“应用中心”分类</p>
<p>“应用中心”有两套界面，这里指的是“界面B”。</p>
<ul>
<li>“当下没有必要”是因为现在只有很少的应用，没有必要再分成两类：“生活助手”和“娱乐消费”。</li>
<p>现在分成两类，“生活助手”是默认显示的，那没问题，用户“一眼”就能看到其下的应用。但是“娱乐消费”呢？用户必须选中“娱乐消费”，然后才能知道里面有什么。即，如果我想知道客户端支持哪些应用，就必须点一次“娱乐消费”。原本为了方便用户的设计，在实际使用中却可能更麻烦。用户可能要在两个标签里切换，才能找到某个应用（或是知道某个应用是没有的）。</p>
<li>“将来又难以扩充”是因为标签的宽度是有限的。现在只有两类还好，但如果将来扩充到三类，甚至四类呢？界面就没法实现了。而且分类越多，需要“在标签里切换寻找应用”的问题就越严重。</li>
<li>比较合理的一个方法是：不用标签来分类，而是将所有的应用显示在一个table里面，然后用table的section机制进行分类（针对section，可能要再做设计和编程的工作，以配合现在的外观）。实际上，在客户端自己的“界面A”里就没有分类。</li>
<li>现在的分类标签也不用丢弃，而是可以改为“最常使用”（或是类似的什么，比如“最爱”）。一般用户常用的应用可能就是固定的几个。当应用很多的时候，“最常使用”标签就会很便捷。</li>
</ul>
<p class="large">难辨“雌雄”的checkbox</p>
<p>登录界面的checkbox延续了网站设计的惯性思维。这里难道不应该使用标准的UISwitch吗？就算是checkbox，在表示“未勾选”的状态时，也应该只显示方框。</p>
<p>标准的UISwitch：<br />
<a href="http://www.xiaweipin.com/wp-content/uploads/2011/05/Screen-shot-2011-05-02-at-1.34.17-AM.png"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/05/Screen-shot-2011-05-02-at-1.34.17-AM.png" alt="" title="UISwitch" width="202" height="69" class="aligncenter border padsmall" /></a></p>
<p>现在的“勾选”（左）和“未勾选”（右）状态，差别不明显：<br />
<a href="http://www.xiaweipin.com/wp-content/uploads/2011/05/checkbox.png"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/05/checkbox-300x37.png" alt="" title="checkbox" width="300" height="37" class="aligncenter border padsmall" /></a></p>
<p>重申：我相信客户端的团队一定有他们的设计理念，且我对客户端的功能也没有足够的了解，这里只是一些初步的，很个人的想法。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xiaweipin.com/archives/44/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iOS App的图标，启动画面及其它</title>
		<link>http://www.xiaweipin.com/archives/28</link>
		<comments>http://www.xiaweipin.com/archives/28#comments</comments>
		<pubDate>Wed, 27 Apr 2011 06:13:11 +0000</pubDate>
		<dc:creator>weipin</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[iOS开发]]></category>

		<guid isPermaLink="false">http://www.xiaweipin.com/?p=28</guid>
		<description><![CDATA[<ol>
<li>图标的圆角和光晕效果</li>
<li>启动画面</li>
<li>Retina</li>
<li>格式和尺寸</li>
<ol>
  <li>格式</li>
  <li>图标的尺寸</li>
  <li>启动画面的尺寸</li>
  </ol>
</ol>]]></description>
			<content:encoded><![CDATA[<p><strong style="color:red">注意：</strong>最新的图标尺寸和文件名规格以Apple的文档为准：<a href="http://developer.apple.com/library/ios/#qa/qa1686/_index.html">Technical Q&#038;A QA1686: App Icons on iPad and iPhone</a>。其中要注意，iTunesArtWork这项<strong>不用</strong>写入Info.plist的Icon files。这点Apple的文档加粗说明了。</p>
<p class="large">目录</p>
<ol>
<li><a href="#roundcorner">图标的圆角和光晕效果</a></li>
<li><a href="#launchimage">启动画面</a></li>
<li><a href="#retina">Retina</a></li>
<li><a href="#formatandsize">格式和尺寸</a></li>
<ol>
<li><a href="#format">格式</a></li>
<li><a href="#iconsize">图标的尺寸</a></li>
<li><a href="#launchimagesize">启动画面的尺寸</a></li>
</ol>
</ol>
<p><a name="roundcorner"></a>
<p class="large">图标的圆角和光晕效果</p>
<p><strong>圆角效果。</strong>图标的圆角效果是系统自动加上的，我们不能控制。这也是为什么我们看到的每个图标，其圆角效果是完全相同的。</p>
<p><strong>光晕效果。</strong>光晕效果也是系统加上的，和“圆角”不同的是，光晕效果是一个可选项。我们可以通过设置app的光晕参数（UIPrerenderedIcon），告诉系统是否要为我们的图标打上光晕效果。</p>
<p>总结：1）设计图标时请记得，图标的圆角效果是系统自动加上的，且是我们无法控制的。 2）设计图标前先决定，是否要使用系统内建的“光晕效果”。</p>
<p>每个图标都有相同的圆角。左边的两个图标有光晕效果，右边的两个没有。<br />
<a href="http://www.xiaweipin.com/wp-content/uploads/2011/04/icon.png"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/04/icon-300x67.png" alt="" title="圆角和光晕效果" width="300" height="67" class="aligncenter border padsmall" /></a></p>
<p><a name="launchimage"></a>
<p class="large">启动画面</p>
<p>我们可以为app设置启动画面，以便在app启动的时候显示。苹果在其开发文档中，很明确地表示：启动画面的作用是给使用者一种错觉，一种app启动很快速的错觉。即，启动画面的初衷不是为了给用户某种“视觉上的冲击”。所以，苹果建议开发者使用app的“空白”界面作为启动画面。苹果自己的app就是这样做的。如果我们无视这种约定，而是使用和app界面完全无关的“插画”作为启动画面（很多app都是这样），那么一般情况下，会有“地摊货”的嫌疑。虽然大多数的普通用户不清楚启动画面“应该”是什么样子：或许用户会喜欢有“视觉冲击力的”插画；或许用户会奇怪为何到了4月，启动画面却仍旧是春节的主题；又或许用户什么感觉也没有。如果一定要使用插画，那么不妨先回答这样一个问题：考虑到苹果开发的app，其启动画面使用的都是朴素的“空白”界，那么我们的app是否有足够充分的理由，来支持使用插画呢？</p>
<p>如果要让启动画面漂亮，我们可以先让app的界面漂亮；App的界面漂亮，那app的“空白”界面也就漂亮；App的“空白”界面漂亮，启动画面也就漂亮了。</p>
<p>系统自带的“时钟”app。第一张是启动画面：使用的是app的“空白”界面。第二张是app运行时的截图。<br />
<a href="http://www.xiaweipin.com/wp-content/uploads/2011/04/photo-21.png"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/04/photo-21-200x300.png" alt="" title="时钟" width="200" height="300" class="aligncenter border padsmall" /></a></p>
<p><a href="http://www.xiaweipin.com/wp-content/uploads/2011/04/照片.png"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/04/照片-200x300.png" alt="" title="时钟2" width="200" height="300" class="aligncenter border padsmall" /></a></p>
<p>App的界面漂亮 ＝ App的“空白”界面漂亮，启动画面也就自然漂亮。比如，Tweetbot的启动画面。<br />
<a href="http://www.xiaweipin.com/wp-content/uploads/2011/04/photo-61.png"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/04/photo-61-199x300.png" alt="" title="tweetbot" width="199" height="300" class="aligncenter border padsmall" /></a></p>
<p><a name="retina"></a>
<p class="large">Retina</p>
<p>iPhone 4和iPod Touch 4有一个新的特性：在屏幕尺寸不变的前提下，分辨率提升一倍（320 x 480 => 640 x 960）。苹果将这个特性命名为Retina。<br />
<a href="http://www.apple.com.cn/iphone/features/retina-display.html">用苹果的话讲：</a></p>
<blockquote><p>Retina显示屏的超高像素密度已超过人眼能分辨的范围。</p></blockquote>
<p>Retina对图像设计（图标、启动画面和其它所有像素有关的东西）有什么影响呢？如果我们的app要支持Retina，就要提供高分辨率的（宽x2，高x2）的图片。同时，为了支持没有Retina的设备，仍旧要准备低分辨率的版本。换言之，我们要准备两套图。</p>
<p>针对不同分辨率的图片，苹果规定了一个命名规范：假如一个普通分辨率的图片，文件名是“abc.png”，那么与其对应的高分辨率的文件名就应该是“abc@2x.png”，多了“@2x”。</p>
<p>举一个例子：</p>
<p>Icon.png<br />
<a href="http://www.xiaweipin.com/wp-content/uploads/2011/04/Icon.png"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/04/Icon.png" alt="" title="Icon" width="57" height="57" class="aligncenter border padsmall" /></a></p>
<p>Icon@2x.png<br />
<a href="http://www.xiaweipin.com/wp-content/uploads/2011/04/Icon@2x.png"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/04/Icon@2x.png" alt="" title="Icon@2x" width="114" height="114" class="aligncenter border padsmall" /></a></p>
<p>这里需要注意的是，虽然在浏览器中，第二张图片的面积是第一张的4倍，但是在支持Retina的iPhone中，显示的大小是一样的。</p>
<p><a name="formatandsize"></a>
<p class="large">格式和尺寸</p>
<p><a name="format"></a>图标和启动画面的格式：推荐使用PNG格式，可以是标准的24位颜色（红、绿和蓝各用8位），外加alpha通道的8位。不要在app图标上使用透明色。</p>
<p><a name="iconsize"></a>图标的尺寸：苹果有一份完整的文档，列出了app所需的全部图标尺寸，和其各自的使用环境。</p>
<p><a href="http://developer.apple.com/library/ios/#qa/qa1686/_index.html">Technical Q&#038;A QA1686: App Icons on iPad and iPhone</a></p>
<ul>
<li>App程序包必须包含以下标记为“必须”的图标。</li>
<li>图片尺寸的单位是px。</li>
</ul>
<p>表格一：只支持iPhone的app图标要求。</p>
<table>
<tr>
<th>尺寸</th>
<th>文件名</th>
<th>用途</th>
<th>是否必须</th>
<th>备注</th>
</tr>
<tr>
<td>512&#215;512</td>
<td>iTunesArtwork</td>
<td>Ad Hoc iTunes</td>
<td>可选，但建议加入</td>
<td>文件应该是PNG格式，但文件名不要使用.png后缀。</td>
</tr>
<tr>
<td>57&#215;57</td>
<td>Icon.png</td>
<td>iPhone/iPod touch的App Store和主屏幕（Home screen）</td>
<td>必须</td>
<td>无</td>
</tr>
<tr>
<td>114&#215;114</td>
<td>Icon@2x.png</td>
<td>高分辨率的iPhone 4主屏幕</td>
<td>可选，但建议加入</td>
<td>无</td>
</tr>
<tr>
<td>72&#215;72</td>
<td>Icon-72.png</td>
<td>主屏幕，为了兼容iPad</td>
<td>可选，但建议加入</td>
<td>无</td>
</tr>
<tr>
<td>29&#215;29</td>
<td>Icon-Small.png</td>
<td>Spotlight和设置app</td>
<td>可选，但建议加入</td>
<td>无</td>
</tr>
<tr>
<td>50&#215;50</td>
<td>Icon-Small-50.png</td>
<td>Spotlight，为了兼容iPad</td>
<td>如果app有设置程序包，那么建议加入。否则可选，但建议加入。</td>
<td>无</td>
</tr>
<tr>
<td>58&#215;58</td>
<td>Icon-Small@2x.png</td>
<td>高分辨率的iPhone 4的Spotlight和设置app</td>
<td>如果app有设置程序包，那么建议加入。否则可选，但建议加入。</td>
<td>无</td>
</tr>
</table>
<p>表格二：只支持iPad的app图标要求。</p>
<table>
<tr>
<th>尺寸</th>
<th>文件名</th>
<th>用途</th>
<th>是否必须</th>
<th>备注</th>
</tr>
<tr>
<td>512&#215;512</td>
<td>iTunesArtwork</td>
<td>Ad Hoc iTunes</td>
<td>可选，但建议加入</td>
<td>文件应该是PNG格式，但文件名不要使用.png后缀。</td>
</tr>
<tr>
<td>72&#215;72</td>
<td>Icon-72.png</td>
<td>iPad的App Store和主屏幕</td>
<td>必须</td>
<td>无</td>
</tr>
<tr>
<td>50&#215;50</td>
<td>Icon-Small-50.png</td>
<td>iPad的Spotlight</td>
<td>可选，但建议加入。</td>
<td>无</td>
</tr>
<tr>
<td>29&#215;29</td>
<td>Icon-Small.png</td>
<td>iPad的设置app</td>
<td>如果app有设置程序包，那么建议加入。否则可选，但建议加入。</td>
<td>无</td>
</tr>
</table>
<p>表格三：Universal的app图标要求。</p>
<table>
<tr>
<th>尺寸</th>
<th>文件名</th>
<th>用途</th>
<th>是否必须</th>
<th>备注</th>
</tr>
<tr>
<td>512&#215;512</td>
<td>iTunesArtwork</td>
<td>Ad Hoc iTunes</td>
<td>可选，但建议加入</td>
<td>文件应该是PNG格式，但文件名不要使用.png后缀。</td>
</tr>
<tr>
<td>57&#215;57</td>
<td>Icon.png</td>
<td>iPhone/iPod touch的App Store和主屏幕（Home screen）</td>
<td>必须</td>
<td>无</td>
</tr>
<tr>
<td>114&#215;114</td>
<td>Icon@2x.png</td>
<td>高分辨率的iPhone 4主屏幕</td>
<td>可选，但建议加入</td>
<td>无</td>
</tr>
<tr>
<td>72&#215;72</td>
<td>Icon-72.png</td>
<td>iPad的App Store和主屏幕</td>
<td>必须</td>
<td>无</td>
</tr>
<tr>
<td>29&#215;29</td>
<td>Icon-Small.png</td>
<td>iPad和iPhone的设置app，iPhone的Spotlight</td>
<td>如果app有设置程序包，那么建议加入。否则可选，但建议加入。</td>
<td>无</td>
</tr>
<tr>
<td>50&#215;50</td>
<td>Icon-Small-50.png</td>
<td>iPad的Spotlight</td>
<td>可选，但建议加入。</td>
<td>无</td>
</tr>
<tr>
<td>58&#215;58</td>
<td>Icon-Small@2x.png</td>
<td>高分辨率的iPhone 4的Spotlight和设置app</td>
<td>如果app有设置程序包，那么建议加入。否则可选，但建议加入。</td>
<td>无</td>
</tr>
</table>
<p><a name="launchimagesize"></a>启动画面的尺寸：</p>
<ul>
<li>尺寸单位是px，宽x高。</li>
<li>iPhone/iPod Touch的启动画面是全尺寸，iPad的则要去掉“状态栏”（Status bar）的高度（20px）。</li>
<li>iPad的启动画面是分模式的：竖排（portrait）和横排模式（landscape）。</li>
</ul>
<table>
<tr>
<th>尺寸</th>
<th>设备</th>
<th>模式</th>
</tr>
<tr>
<td>320 x 480</td>
<td>低分辨率iPhone/iPod Touch</td>
<td>竖排和横排</td>
</tr>
<tr>
<td>640 x 960</td>
<td>高分辨率iPhone/iPod Touch</td>
<td>竖排和横排</td>
</tr>
<tr>
<td>768 x 1004</td>
<td>iPad</td>
<td>竖排</td>
</tr>
<tr>
<td>1024 x 748</td>
<td>iPad</td>
<td>横排</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.xiaweipin.com/archives/28/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>我们的微博iPhone客户端，能不能更好些</title>
		<link>http://www.xiaweipin.com/archives/13</link>
		<comments>http://www.xiaweipin.com/archives/13#comments</comments>
		<pubDate>Mon, 18 Apr 2011 17:51:37 +0000</pubDate>
		<dc:creator>weipin</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[iOS App]]></category>
		<category><![CDATA[iOS开发]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[微博]]></category>

		<guid isPermaLink="false">http://www.xiaweipin.com/?p=13</guid>
		<description><![CDATA[打开微博的iPhone客户端，关掉，再打开，再关掉。一定是我的要求太高了（或是口味太重了），因为我看别人好像都用的好好的，没啥抱怨。是了，我们一直都是很少抱怨的嘛。]]></description>
			<content:encoded><![CDATA[<p>打开微博的iPhone客户端，关掉，再打开，再关掉。定是我的要求太高了（或是口味太重了），看别人好像都用的好好的，没啥抱怨。是了，我们一直都是很少有抱怨的嘛。</p>
<p class="large">微博客户端的头号（天字第一号）让我困扰的问题是滚屏的时候很“卡”。</p>
<p>据我观察，文字越是多的时候，“卡”得越厉害。这里“卡”的冠军要颁给一款名为Weico的微博app。这也不能怪人家，Weico是唯一（就我所知）能*直接*在时间线里显示表情、超链接、@和图片的，人也是“卡”得其所。</p>
<p class="large">然后，在看微博的时候，有预览和详细之分。</p>
<p>在预览模式下，你一般是看不到完整显示的。看自己的微博时间线，就像是在一个没有打开语法高亮功能的编辑器里看源代码文件：@没有上色，不能点；超链接没有上色，不能点；表情则是[嘻嘻][酷]这样。你一定要点开某条微博，然后在“详细”里面（UIWebView）才能看到完整的，上了色的，可以点击@人名和超链接的版本。但人老外的Twitter官方客户端不也是这样，很多人在用也没见抱怨嘛。开始我觉得一定是自己口味太重，直到用了Tweetbot。Tweetbot虽然也只是显示预览，但当你选中一条微博后，会“就地”给@和超链接上色，而且变成可以点击。换言之，Tweetbot其实取消了“详细”这部分界面。</p>
<p>Twitter的官方客户端，有“预览”和“详细”的概念区分。<br />
<a href="http://www.xiaweipin.com/wp-content/uploads/2011/04/photo-2.png"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/04/photo-2-200x300.png" alt="" title="Twitter官方客户端" width="200" height="300" class="aligncenter border padsmall" /></a></p>
<p>新浪微博的官方客户端，也是有“预览”和“详细”的概念区分（新浪微博的“阅读模式”在这里是设定为“预览图模式”）。“预览”之下没有着色，链接不能点击，不显示表情。<br />
<a href="http://www.xiaweipin.com/wp-content/uploads/2011/04/photo-1.png"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/04/photo-1-200x300.png" alt="" title="新浪微博" width="200" height="300" class="aligncenter border padsmall" /></a></p>
<p>Tweetbot，在选中一条微博后，“就地”上色的效果，超链接变成可点击。<br />
<a href="http://www.xiaweipin.com/wp-content/uploads/2011/04/photo-3.png"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/04/photo-3-200x300.png" alt="" title="Tweetbot" width="200" height="300" class="aligncenter border padsmall" /></a></p>
<p>Weico，能够直接为@和超链接上色，且能点击。能够显示表情。<br />
<a href="http://www.xiaweipin.com/wp-content/uploads/2011/04/photo-4.png"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/04/photo-4-200x300.png" alt="" title="Weico" width="200" height="300" class="aligncenter border padsmall" /></a></p>
<p>用浏览器看微博，肯定没有“预览”和“详细”之分。是个链接都会有颜色，能够点击，表情也是有的。到了手机上，如果是Symbian这样的系统，你分“预览”和“详细”大家也能理解，手机毕竟只是手机。但对号称“重新发明了手机”的iPhone，就说不过去。你看Mobile Safari，哪怕你的网站没有为手机优化过，或是定制过，我也照看不误（Flash除外）。Tweetbot和Weico对这个问题的处理方式说明用户有这样的需求，技术上也是可以做到的（也说明我的口味其实不重）。相比Twitter，我们的微博功能更多：有转发的嵌套显示，有表情。而微博功能越多，“预览模式”就越无力，给用户的体验也越差。所以和Twitter相比，我们的客户端更需要剔除“预览”和“详细”之分，让用户的体验和Web版靠拢，就像Weico那样的实现（如果不是那样卡的话）。</p>
<p>请支持横屏</p>
<p>横屏模式下，一行能显示更多的文字，也就能给用户不一样的阅读体验，多一个选择。也许“90％的用户只会用到软件10％的功能”，但您也不能抛弃这另外10％的用户吧。何况：1）对不同的用户，这10％的功能也会不同  2）你不喜欢横屏不代表别人不喜欢  3）横屏模式说不定也是很有爱的。微博iPhone客户端大多不支持横屏，国内的暂未见过，Twitter的客户端里，Icebird是支持的。（声明：我不是app达人，只用过手指头数得过来的微博客户端，所以有漏掉支持横屏的客户端不要怪我！！！不要怪我！！！，咆哮体）。</p>
<p>横屏模式下的Icebird。<br />
<a href="http://www.xiaweipin.com/wp-content/uploads/2011/04/photo-51.png"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/04/photo-51-300x200.png" alt="" title="photo (5)" width="300" height="200" class="aligncenter border padsmall" /></a></p>
<p class="large">
假如，我是说假如，能由我来设计和实现一款微博iPhone客户端，我希望她是这个样子…
</p>
<ol>
<li>取消“预览”和“详细”的区分。</li>
<p>拉近Web版和iPhone版的用户体验。Tweetbot做到了、Weico也做到了，您也一定能做到的。</p>
<li>滚屏做到不“卡”。</li>
<p>滚动又要流畅不“卡”，又要能直接显示表情，超链接和图片。我相信在技术上是有难度的，是个小壁垒。</p>
<li>支持横屏。</li>
<li>然后是各种细节。</li>
<ul>
<li>官方的客户端应该是Universal的。</li>
<p>苹果是建议开发商推Universal的app的。这样用户下载一次，大小设备都能用。虽然收费的app少有Universal的（因为这里的开发成本也不小，以Universal的形式发行等于是免费的大升级），但官方的免费app大多数都是Universal的，目的也是为了方便用户。当然，分开有开发商分开的理由。</p>
<li>启动画面不用插画。</li>
<p>苹果在开发文档里说得很明白，启动画面的作用是为了给用户app启动快速的感觉，所以要用app的“空白”界面作为启动画面。各种花哨的启动画面给人的感觉是不专业（如果你每次启动都能换个图来看也就算了）。iPhone自带的app都是用的“空白”界面当启动画面，我们又有什么理由用插画呢。要让启动画面漂亮，可以先让app的界面漂亮；App的界面漂亮，那app的“空白”界面也就漂亮；App的“空白”界面漂亮，启动画面也就漂亮了。</p>
<p>Tweetbot的启动画面。<br />
<a href="http://www.xiaweipin.com/wp-content/uploads/2011/04/photo-6.png"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/04/photo-6-199x300.png" alt="" title="Tweetbot Launch Image" width="199" height="300" class="aligncenter border padsmall" /></a></p>
<p>Icebird的启动画面。<br />
<a href="http://www.xiaweipin.com/wp-content/uploads/2011/04/photo-7.png"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/04/photo-7-200x300.png" alt="" title="Icebird Launch Image" width="200" height="300" class="aligncenter border padsmall" /></a></p>
<li>时间的显示用相对值，不用绝对值。</li>
<p>不用绝对值精确到秒，而是用相对值。网易微博的官方客户端用的就是相对值。</p>
<table>
<tr>
<th>时间</th>
<th>显示</th>
</tr>
<tr>
<td>小于1小时</td>
<td>x分钟前</td>
</tr>
<tr>
<td>大于1小时，小于24小时</td>
<td>x小时前</td>
</tr>
<tr>
<td>大于1天，小于一周</td>
<td>x天前</td>
</tr>
<tr>
<td>大于一周，小于一月</td>
<td>x周前</td>
</tr>
<tr>
<td>大于一月</td>
<td>x月前</td>
</tr>
</table>
<li>时间轴的显示支持“时间断层”。</li>
<p>这个功能国外的Twitter客户端都是有的。举例来说，我昨天用了你的客户端，客户端的微博记录是到昨天的。到今天，我的时间线上又有了很多的新微博（比如200条）。现在我又用你的客户端，这时我会先看到昨天的内容，然后客户端会取一定数量新的微博回来，比如30条，或是50条。不可能一次就把新的都取下来对不对，难道有1000条新的，就要一次性下载1000条吗，这肯定不现实。一般的逻辑是客户端会取最新的n条记录，比如50条。然后剩下的（150条）以“时间断层”的形式显示。这样，使用者就能知道“这里”还有新的内容，点一下“时间断层”，客户端就可以在剩下的里面再取n条下来。</p>
<p>Twitter官方客户端的时间断层。<br />
<a href="http://www.xiaweipin.com/wp-content/uploads/2011/04/photo-8.png"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/04/photo-8-200x300.png" alt="" title="时间断层" width="200" height="300" class="aligncenter border padsmall" /></a></p>
<p>我是个粗心的人，没能看到国内的客户端有这样的时间断层功能。印象中好像是这样处理的：一种是把多出来的那150条给吃掉。我今天有200条新的微博，刷新后拿到50条最新的。但“昨天取下来的最新的那条记录”和“新的50条中最旧的那条”之间的150条就没了，再怎刷也找不回来了，你能相信吗。另一种是刷新最新的50条后，table view会滚动到顶部（要么是用户自己为了刷新滚上去的，要么是app自动滚上去的），当你往下滚动超出这50条的范围时，app会再取“次新”的。缺点是，你要再滚150条记录才能看到昨天的那个位置。</p>
<li>时间轴的显示支持“更新锚点”。</li>
<p>新的微博取下来后，最好能有一个方法帮助用户区分“新的”和“旧的”。当你想把旧的先看完时；或者当你看到某处，才发觉是已经看过的旧博时；就能体会到这种“新”“旧”有所区别的好了。新浪微博的做法是，新取下来的微博，时间的颜色会用高亮显示。这不是很明显，而且我好奇：短时间内多次刷新，在得到不同批次的新微博后，这个颜色处理的逻辑是怎样的。Tweetbot的做法是在“新”和“旧”之间显示一个“更新锚点”。<br />
<a href="http://www.xiaweipin.com/wp-content/uploads/2011/04/photo-9.png"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/04/photo-9-200x300.png" alt="" title="update hint" width="200" height="300" class="aligncenter border padsmall" /></a>
</ul>
</ol>
<p>再往下写，没完没了。故以上仅为不完整的草稿，及很个人的想法。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xiaweipin.com/archives/13/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>再见艳阳天</title>
		<link>http://www.xiaweipin.com/archives/7</link>
		<comments>http://www.xiaweipin.com/archives/7#comments</comments>
		<pubDate>Sat, 16 Apr 2011 17:34:12 +0000</pubDate>
		<dc:creator>weipin</dc:creator>
				<category><![CDATA[随笔]]></category>
		<category><![CDATA[电影]]></category>

		<guid isPermaLink="false">http://www.xiaweipin.com/?p=7</guid>
		<description><![CDATA[《再见艳阳天》（The Dark Side of the Sun）摄于1988年，导演Bozidar Nikolić。<a href="http://www.imdb.com/title/tt0118930/">据IMDb的记载</a>，影片在南斯拉夫完成拍摄后，因当地爆发内战，导致大部分的底片丢失。后经5年的搜寻，在1996年找齐了丢失的底片，并最终于1997年同观众见面。电影给人感觉很美，从头至尾。这美不是“碧蓝如镜的湖面”能给人的自然美，而是诗般的美。您说，装模作样的，这诗哪儿美了，这电影又哪儿美了？诗的美来自词句，更美的是诗人的激情。电影的美来自对白、音乐和镜头，更美的是电影身后的灵魂。]]></description>
			<content:encoded><![CDATA[<p>记得有那么一次，几个人一起看<a href="http://movie.douban.com/subject/1309297/">《神经侠侣》</a>，英文名《Crazy N&#8217; the City》。你说好好的一部电影，为什么中文版的名字会如此莫名？特别是在观完全剧，并看到英文片名后，这个疑惑更甚。也许片方在定中文名时，有我们不知道的原因。又或是我们这些大陆人尚未领悟《神经侠侣》和《神雕侠侣》的微妙关联。</p>
<p><a href="http://www.xiaweipin.com/wp-content/uploads/2011/04/p486707189.jpg"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/04/p486707189-150x150.jpg" alt="" title="" width="150" height="150" class="alignright border padsmall" /></a></p>
<p>比《神经侠侣》起名更“神经”的还有<a href="http://movie.douban.com/subject/3683409/">《夜·店》</a>。电影上映之初，我记得片名的“夜”和“店”中间并无这一点。而《One Night in Supermarket》怎么就成《夜店》了呢，何况“夜店”这个专有名词之前已经传入了大陆。</p>
<p>上面扯远了。话说回来，几个人看完《神经》，我表示电影很棒，是我们HK近年少有的佳作。我的表态马上引来嘘声一片，并有人表示，我一定是看上了片中那个长相清纯的女高中生，才会有此结论。那时我争辩了几轮，结果徒劳。如果那时的我，换成现在的我，定不会做无谓的“挣扎”。每个人的口味不同，喜欢的电影也会不同。就算是同一个人，随着年龄的增长，阅历的增多，世界观的改变，喜欢的电影也会发生变化。以上，引出此篇的声明：每个人有喜爱电影的自由，无需将自己的喜爱或是厌恶强加与人。我喜欢的也许您觉得很糟糕，特此声明。</p>
<p class="large">正片开始</p>
<p>《再见艳阳天》（The Dark Side of the Sun）摄于1988年，导演Bozidar Nikolić。<a href="http://www.imdb.com/title/tt0118930/">据IMDb的记载</a>，影片在南斯拉夫完成拍摄后，因当地爆发内战，导致大部分的底片丢失。后经5年的搜寻，在1996年找齐了丢失的底片，并最终于1997年同观众见面。<a href="http://www.xiaweipin.com/wp-content/uploads/2011/04/photo.png"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/04/photo-150x150.png" alt="" title="" width="150" height="150" class="alignleft border padsmall" /></a></p>
<p>电影给人感觉很美，从头至尾。这美不是“碧蓝如镜的湖面”的自然美，而是诗般的美。您说，装模作样的，这诗哪儿美了，这电影又哪儿美了？诗的美来自词句，更美的是诗人的激情。电影的美来自对白、音乐和镜头，更美的是电影身后的灵魂。</p>
<p>片中人物的对白，更像是来自小说。如果我们把周星驰在《大话西游》中念出的那句“一万年”奉为经典的话，那您可以在本片中遇到很多这样的“一万年”。影片另外三处“表面”上的出色之处是音乐、镜头和细节的处理。您亲自观看电影之后便知。细节的处理，举一例：这是影片开始后不久的一个长镜头，对着男主角的家门。当男主角进入镜头，准备进屋的时候，两个身穿白衣，护士模样的人走出屋子离开镜头。随后佣人告知男主角，医生刚走。这细节，在我们第一次观看的时候（至少我是这样），基本都会忽略，因为和情节无关。这两位护士和屋子外的树没什么差别，是风景。您说导演这是何苦来的呢？</p>
<p>差不多90分钟的电影，场景并不多。这让我想起了另一部电影<a href="http://movie.douban.com/subject/2300586/">《The Man from Earth》</a>，只有一个场景却能抓住人看到底。所以您看，这电影的好坏和场景的大小没有必然的因果关系，对不对。《再见艳阳天》中出场的人物，无论大小，导演（或是编剧）都为他设计了个性，并通过细节来描写刻画。一些有意思的我会列出在文后。那么除去表面，影片的灵魂呢？或者说精神呢？这毕竟不是娱乐片对不对。片名《The Dark Side of the Sun》又是什么意思？我觉得导演（或是编剧）好像仿佛是位历经沧桑，多有磨难的老人。这世上有没有这种疾病无关紧要，疾病是寓言，是比喻，被老人借以向观众传达这样的感受：人生是痛苦的，幸福却又很短暂，不要虚度光阴。是不是很有“读者文摘”的味道？请各位自行观看体会。</p>
<p>记这部电影，不能不记一位演员：布拉德·皮特。在IMDb的记录里，皮特最早的记录开始于1987，某部电影的龙套（uncredited）。这部1988年的电影，应该是皮特最早期的作品，那时他25岁。第一次看到皮特的演出是在电影《陌路狂花》（Thelma &#038; Louise, 1991），扮演一位骗财骗色的帅哥，配角。那时皮特还未成名。而后，1995年公映的《七宗罪》，据说是让皮特成名的关键作品。据《七宗罪》的导演在接受媒体采访时的说法，大意如下“皮特之前（拍摄《七宗罪》之前）还只是2线演员，我找到他跟他讲，你来演这个角色，我包你上一线，最后你看，成了”。<a href="http://www.xiaweipin.com/wp-content/uploads/2011/04/10994953_gal.jpeg"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/04/10994953_gal-150x150.jpg" alt="" width="150" height="150" class="alignright border padsmall" /></a></p>
<p>包括我在内，会跑去看这部“看了简介就没什么兴趣”的电影，皮特是诱因。我猜这个世上有很多优秀的电影作品，但是知名度不高，关注的人不多，或是过了很多年才被“二次挖掘”成为经典，多少会和当时演员的知名度有关。您说一部电影，如果其导演和演员都是“无名”，能吸引多少人去看？何况现在凡事都讲市场运作。记得≪三峡好人≫公映后的无奈吗？何况贾樟柯那时并非默默无闻的导演。“小众电影能有几多票房？小贾的号召力怎比老谋子？”几家电影院线老总在谈及没有为≪三峡好人≫安排足够的上映场次时，解释说，当然这不是原话（和≪三峡好人≫同时公映，排了相同档期的还有《满城尽带黄金甲》）。</p>
<p>其实对皮特与此片，我想表达的观点是：换一个人出演这部电影的男主角，影片还是会呈现一样的水准。我一直觉得，演员是电影这颗植物开出的花。只有当导演和编剧是出色的，演员的表演才有可能艳丽。</p>
<p>今天要写这篇影评（如果这样的文，算得上是评的话），是因为看到这部电影在IMDb和国内各视频网站的评分很低（<a href="http://www.imdb.com/title/tt0118930/">IMDb目前得分5.0</a>），略感不平，有感而发。这也是为什么在前文要先引出声明，即“每个人有喜爱电影的自由，无需将自己的喜爱或是厌恶强加与人。我喜欢的也许您觉得很糟糕”。之前对该片背景尚不了解时，自觉这是一部堪比《肖申克的救赎》，且更“深”的经典佳作，IMDb上怎么也得有个8.0吧。结果您看：<a href="http://www.xiaweipin.com/wp-content/uploads/2011/04/Screen-shot-2011-04-17-at-12.11.54-AM.png"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/04/Screen-shot-2011-04-17-at-12.11.54-AM-300x110.png" alt="" title="" width="300" height="110" class="aligncenter border padsmall" /></a></p>
<p>最后，这部电影可以在qiyi.com线上观看（有删减）：<a href="http://www.qiyi.com/dianying/20110412/bddc5c1a8cf425f0.html">http://www.qiyi.com/dianying/20110412/bddc5c1a8cf425f0.html</a>。开始时情节推进很慢，我曾快进了一次，看完后再补了跳过的段落。</p>
<p>最后的最后，附上剧中几位人物的对白，细节刻画或是其它我觉得有意思的地方（有剧透）。</p>
<ol>
<li>片尾男女主角的对话（qiyi.com版本的字幕翻译）</li>
<ul>
<li>女：是你。</li>
<li>男：我一直在找你。</li>
<li>女：找了一晚上？</li>
<li>男：找了一辈子。</li>
<li>女：你现在找到我了。</li>
</ul>
<li>女佣</li>
<p>女佣平时严肃，不苟言笑。但内心关爱Rick一家。在父亲生日那天准备了礼物，也是在派对时唯一哭的人。</p>
<li>父亲</li>
<p>当父亲得知儿子在酒吧被打后，告诉Rick要外出办急事。随后来到广场酒吧，教训了那几个打儿子的家伙。</p>
<li>杂货店老板</li>
<p>Rick在杂货店拿了东西出来，在门口遇到女主角，然后交谈。杂货店老板站在两人身边也不说话，看着Rick，直到Rick意识到还没有付钱。杂货店老板拿到钱后离开。</p>
<li>酒吧掌柜</li>
<p>一旦酒吧里有“意外”发生，掌柜会调高收音机音量，谁也不帮，什么也不管。</p>
<li>生日派对</li>
<p>电影结尾处，Rick生命的最后一天。Rick为父亲举办生日派对，大家都很开心的样子。父子两人都知道时间已经不多，但这时都没有表示出悲伤。女主角则完全不知内情，笑着唱歌（真心）助兴，歌名是“Yesterday Is My Tomorrow”。而女佣则是这一幕唯一哭的角色。</p>
<li>Rick送给父亲的那本书</li>
<p>影片开始不久后有一幕，父子二人共餐后，父亲告诉Rick他要的那本来自美国的书到了。这本书其后在片中至少出现了2次。一次是Rick在海边和人赛车时，女主角手里抱着。一次是在片尾，生日派对上。<br />
<a href="http://www.xiaweipin.com/wp-content/uploads/2011/04/photo1.png"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/04/photo1-300x200.png" alt="" title=" book1" width="300" height="200" class="aligncenter border padsmall" /></a></p>
<p>此书为：<a href="http://www.amazon.com/Complete-Tales-Poems-Edgar-Allan/dp/0394716787">The Complete Tales and Poems of Edgar Allan Poe。</a><br />
<a href="http://www.xiaweipin.com/wp-content/uploads/2011/04/photo.jpg"><img src="http://www.xiaweipin.com/wp-content/uploads/2011/04/photo.jpg" alt="" title="book2" width="180" height="281" class="aligncenter border padsmall" /></a></p>
<p><a href="http://zh.wikipedia.org/zh/%E7%88%B1%E4%BC%A6%C2%B7%E5%9D%A1">http://zh.wikipedia.org/zh/爱伦·坡</a></p>
<blockquote><p>
埃德加·愛倫·坡（英语：Edgar Allan Poe；1809年1月19日－1849年10月7日），美國作家、詩人、編者與文學評論家，被尊崇是美國浪漫主義運動要角之一，以懸疑、驚悚小說最負盛名。愛倫·坡是美國的短篇小說家先鋒之一，並被公認是推理小說的創造者，甚至被視為科幻小說的共同催生者之一。
</p></blockquote>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.xiaweipin.com/archives/7/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

