<?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>Wangling &#187; Voodo</title>
	<atom:link href="http://wangling.me/tag/voodo/feed/" rel="self" type="application/rss+xml" />
	<link>http://wangling.me</link>
	<description>I&#039;m Wang Ling. I&#039;m wangling you.</description>
	<lastBuildDate>Sat, 28 Jan 2012 13:48:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>国产 Tapbots，零号呼叫壹号</title>
		<link>http://wangling.me/2011/11/0-calls-for-1/</link>
		<comments>http://wangling.me/2011/11/0-calls-for-1/#comments</comments>
		<pubDate>Sat, 19 Nov 2011 08:21:38 +0000</pubDate>
		<dc:creator>an0</dc:creator>
				<category><![CDATA[中文]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[startup]]></category>
		<category><![CDATA[微博]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Voodo]]></category>

		<guid isPermaLink="false">http://wangling.me/?p=756</guid>
		<description><![CDATA[如果你爱 ，爱 graphics，追求 pixel perfect，想做顶级 app，听到呼叫请回答。从此以后，好用看我的，好看看你的。对 Tweetbot 有爱的也请入，有惊喜。]]></description>
			<content:encoded><![CDATA[<p><script src="http://wangling.me/safari/WeiboApp/scripts/prototype.js" language="JavaScript" type="text/javascript"></script><br />
<script src="http://wangling.me/safari/WeiboApp/scripts/qtp_poster.js" language="JavaScript" type="text/javascript"></script></p>
<link href="http://wangling.me/safari/WeiboApp/stylesheets/qtp_poster.css" rel="StyleSheet" type="text/css" />
<p><a href="http://tapbots.com/">Tapbots</a> 是这个星球上最酷的 iOS 开发组合。他们的 apps 极具风格，功能完善，细致入微，质感十足，有趣如玩具，优雅如艺术，强劲如 bot。</p>
<p>他们证明：一个 Top Developer (Paul) + 一个 Top Designer (Mark) + 将事情做到极致的态度 = 近乎完美的 apps</p>
<p>对于这样一个组合，我向往已久。</p>
<p>作为一个完美主义者，将事情做到极致的态度是与生俱来的。</p>
<p>经过近两年在 iOS 平台上的积累，渐入佳境，任何想法，只要平台支持，都能实现。由于不能展示代码，最好的途径是展示作品。</p>
<p><a href="http://iwonderphone.com/">Voodo</a> 是我的第一款产品，已在 App Store 贩卖近两年，获得过一些<a href="http://blog.iwonderphone.com/2011/07/11/new-and-noteworthy-in-japan/">成绩</a>，用户评价很高。</p>
<p>我善于立足于功能进行产品设计：贴心的交互方式、合理的功能布局、最优的操作流程。用，你会发现它们如此顺手；看，它们的确不算养眼。正因如此，我这个零号 Developer 才呼叫你这个壹号 Designer。从此以后，好用看我的，好看看你的。</p>
<p>XXX<sup><a href="http://wangling.me/2011/11/0-calls-for-1/#footnote_0_756" id="identifier_0_756" class="footnote-link footnote-identifier-link" title="待命名">1</a></sup> 是一款顶级微博客户端 app，正在开发中，功能基本完成。这将是你入伙后立马参与的产品。</p>
<p><a href="http://wangling.me/safari/WeiboApp/WeiboApp.mov" rel="qtposter"><br />
	<img src="http://wangling.me/safari/WeiboApp/WeiboApp.jpg" width="640" height="496" alt="WeiboApp"/><br />
</a></p>
<p>(如果你的浏览器无法播放上面视频的话，请在<a href="http://v.youku.com/v_show/id_XMzI0MDE0NjMy.html">优酷</a>观看。)</p>
<p>之所以开发这款产品，是因为：</p>
<ol>
<li>我们有各种各样的国产 Twitter，有一两个还很火，却没有一款很好的客户端 app。作为一个用户，我无法接受；作为一个习惯了精良 Twitter 客户端 app 的用户，我心生向往；作为一个开发者，我明白自力更生最行之有效；作为一个创业者，我认准这个市场大有可为。</li>
<li>自我验证。Tweetbot 不光是最优秀的 Twitter 客户端 app，而且是整个 App Store 里数一数二的，堪称艺术品。我想试试能不能做出一款同样品质的 app。事实证明，我可以。</li>
<li>展示才能。想要一个如此优秀的你，自然得先让你看到一个配得上你的我。</li>
</ol>
<p>在此，必须特别申明：我从 Tweetbot 上学习了很多，但我的目的不是抄袭它。最终产品会借鉴它的优秀之处，但不会使用它的 graphic 元素。事实上，我有自己的美好设想，只等你来一起实现。</p>
<p>如果，你喜爱 Apple 的产品，热爱 graphics，追求 pixel perfect，能够画出如 Tweetbot 这般细腻有质感的 UI，并且也有做顶级 app 的梦想，听到呼叫请回答。</p>
<p>联系方式：</p>
<ul>
<li>Email: <a href="&#x6d;&#x61;&#x69;&#108;&#116;&#111;&#58;&#97;&#x6e;&#x30;&#48;&#x6e;&#97;&#64;&#x67;&#x6d;&#x61;&#x69;&#108;&#46;&#x63;&#x6f;&#x6d;">&#x61;&#110;&#x30;&#x30;&#110;&#97;&#x40;&#x67;&#109;&#97;&#x69;&#108;&#x2e;&#x63;&#x6f;&#x6d;</a></li>
<li>Twitter: <a href="http://twitter.com/an0">an0</a></li>
<li>新浪微博：<a href="http://weibo.com/an00na">an00na</a></li>
</ul>
<hr />
<p>To Tapbots or anyone concerned:<br/><br />
I didn&#8217;t intend to rip off Tweetbot and I won&#8217;t. I see Tapbots as a role model and I studied and learned from their products. The development of this Weibo app is a self challenge to see whether I can make such beautiful things. My app as of now is just a demo to demonstrate what I can do as a developer. I used Tweetbot&#8217;s graphics because I couldn&#8217;t resist its beauty and also because I needed to see my app form gradually in a realistic way as a self motivataion. I won&#8217;t use any of graphics from Tweetbot in my final product. Actually, I have my own ideas about this app, and I&#8217;m here calling for my partner, my own designer, to make it true together with me. Thank you very much, Tapbot, for inspiring me!</p>
<div class="footnotes"><ol ><li id="footnote_0_756" class="footnote">待命名</li></ol></div><div class="social">			<a href="https://twitter.com/share?url=http%3A%2F%2Fwangling.me%2F2011%2F11%2F0-calls-for-1%2F" class="twitter-share-button" data-url="http%3A%2F%2Fwangling.me%2F2011%2F11%2F0-calls-for-1%2F" data-text="国产 Tapbots，零号呼叫壹号: 如果你爱 ，爱 graphics，追求 pixel perfect，想做顶级 app，听到呼叫请回答。从此以后，好用看我的，好看看你的。对 Tweetbot 有爱的也请入，有惊喜。" data-via="an0" data-count="none">Tweet</a>
			<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>			<script type="text/javascript" charset="utf-8">
(function(){
  var _w = 86 , _h = 18;
  var param = {
    url:"http%3A%2F%2Fwangling.me%2F2011%2F11%2F0-calls-for-1%2F",
    type:'6',
    count:'', /**是否显示分享数，1显示(可选)*/
    appkey:'', /**您申请的应用appkey,显示分享来源(可选)*/
    title:'国产 Tapbots，零号呼叫壹号: 如果你爱 ，爱 graphics，追求 pixel perfect，想做顶级 app，听到呼叫请回答。从此以后，好用看我的，好看看你的。对 Tweetbot 有爱的也请入，有惊喜。', /**分享的文字内容(可选，默认为所在页面的title)*/
    pic:'', /**分享图片的路径(可选)*/
    ralateUid:'1676354212', /**关联用户的UID，分享微博会@该用户(可选)*/
    rnd:new Date().valueOf()
  }
  var temp = [];
  for( var p in param ){
    temp.push(p + '=' + encodeURIComponent( param[p] || '' ) )
  }
  document.write('<iframe allowTransparency="true" frameborder="0" scrolling="no" src="http://hits.sinajs.cn/A1/weiboshare.html?' + temp.join('&') + '" width="'+ _w+'" height="'+_h+'" style="margin-left:5px;"></iframe>')
})()
</script></div>]]></content:encoded>
			<wfw:commentRss>http://wangling.me/2011/11/0-calls-for-1/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
<enclosure url="http://wangling.me/safari/WeiboApp/WeiboApp.mov" length="381" type="video/quicktime" />
		</item>
		<item>
		<title>800</title>
		<link>http://wangling.me/2011/05/800/</link>
		<comments>http://wangling.me/2011/05/800/#comments</comments>
		<pubDate>Tue, 10 May 2011 16:09:16 +0000</pubDate>
		<dc:creator>an0</dc:creator>
				<category><![CDATA[中文]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[App Store]]></category>
		<category><![CDATA[Voodo]]></category>

		<guid isPermaLink="false">http://wangling.me/?p=447</guid>
		<description><![CDATA[今天 Voodo Lite 在中国 App Store 得到第 800 个评分，平均评价为 4.5 星。 800 是个吉利的数字，留作小小纪念。 Tweet]]></description>
			<content:encoded><![CDATA[<p>今天 <a href="http://itunes.apple.com/cn/app/voodo-lite-easy-todo/id356816024?mt=8">Voodo Lite</a> 在中国 App Store 得到第 800 个评分，平均评价为 4.5 星。</p>
<div class="thumbnail"><a href="https://skitch.com/an00na/fjgyq/may-10-2011-800-ratings-of-voodo-lite-china"><img style="max-width:638px" src="https://img.skitch.com/20110711-j9cwd5a7pbkg81e1gqi45ue6t.medium.jpg" alt="May 10, 2011, 800 Ratings of Voodo Lite, China" /></a></div>
<p>800 是个吉利的数字，留作小小纪念。</p>
<div class="social">			<a href="https://twitter.com/share?url=http%3A%2F%2Fwangling.me%2F2011%2F05%2F800%2F" class="twitter-share-button" data-url="http%3A%2F%2Fwangling.me%2F2011%2F05%2F800%2F" data-text="800" data-via="an0" data-count="none">Tweet</a>
			<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>			<script type="text/javascript" charset="utf-8">
(function(){
  var _w = 86 , _h = 18;
  var param = {
    url:"http%3A%2F%2Fwangling.me%2F2011%2F05%2F800%2F",
    type:'6',
    count:'', /**是否显示分享数，1显示(可选)*/
    appkey:'', /**您申请的应用appkey,显示分享来源(可选)*/
    title:'800', /**分享的文字内容(可选，默认为所在页面的title)*/
    pic:'', /**分享图片的路径(可选)*/
    ralateUid:'1676354212', /**关联用户的UID，分享微博会@该用户(可选)*/
    rnd:new Date().valueOf()
  }
  var temp = [];
  for( var p in param ){
    temp.push(p + '=' + encodeURIComponent( param[p] || '' ) )
  }
  document.write('<iframe allowTransparency="true" frameborder="0" scrolling="no" src="http://hits.sinajs.cn/A1/weiboshare.html?' + temp.join('&') + '" width="'+ _w+'" height="'+_h+'" style="margin-left:5px;"></iframe>')
})()
</script></div>]]></content:encoded>
			<wfw:commentRss>http://wangling.me/2011/05/800/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>如何在 iTunes Store 中兑换 Promo Code</title>
		<link>http://wangling.me/2010/11/%e5%a6%82%e4%bd%95%e5%9c%a8-itunes-store-%e4%b8%ad%e5%85%91%e6%8d%a2-promo-code/</link>
		<comments>http://wangling.me/2010/11/%e5%a6%82%e4%bd%95%e5%9c%a8-itunes-store-%e4%b8%ad%e5%85%91%e6%8d%a2-promo-code/#comments</comments>
		<pubDate>Wed, 01 Dec 2010 05:45:59 +0000</pubDate>
		<dc:creator>an0</dc:creator>
				<category><![CDATA[中文]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[App Store]]></category>
		<category><![CDATA[iTunes]]></category>
		<category><![CDATA[Voodo]]></category>

		<guid isPermaLink="false">http://wangling.me/?p=321</guid>
		<description><![CDATA[好几次我送 Voodo 的 Promo Code 时都被问到：如何在 App Store1 中使用2 Promo Code？ 今天又一个人问我这个问题。我想，是时候上个看图说话了。 关键点： Promo Code 只能在美国 App Store 兑换，所以你需要创建一个美国 iTunes Store 账户。 创建美国 iTunes Store 的最大障碍是需要有效美国信用卡。 用 Promo Code 进行美国 iTunes Store 账户创建能够规避美国信用卡的要求。3 创建美国 iTunes Store 账户和兑换 Promo Code 是一起完成的。 所有操作都在 iTunes 中完成。我用的是 Mac OS X 下的 iTunes，如果你用 Windows 的话可能界面稍微有点差异，但我相信操作是一样的。 看图说话： 注销4已登陆账户。 切换到美国 iTunes Store。 [...]]]></description>
			<content:encoded><![CDATA[<p>好几次我送 <a href="http://itunes.apple.com/app/voodo-easy-todo/id347232658?mt=8">Voodo</a> 的 Promo Code 时都被问到：如何在 App Store<sup><a href="http://wangling.me/2010/11/%e5%a6%82%e4%bd%95%e5%9c%a8-itunes-store-%e4%b8%ad%e5%85%91%e6%8d%a2-promo-code/#footnote_0_321" id="identifier_0_321" class="footnote-link footnote-identifier-link" title="更笼统的讲是 iTunes Store">1</a></sup> 中使用<sup><a href="http://wangling.me/2010/11/%e5%a6%82%e4%bd%95%e5%9c%a8-itunes-store-%e4%b8%ad%e5%85%91%e6%8d%a2-promo-code/#footnote_1_321" id="identifier_1_321" class="footnote-link footnote-identifier-link" title="术语叫&ldquo;兑换&rdquo;">2</a></sup> Promo Code？</p>
<p>今天又一个人问我这个问题。我想，是时候上个看图说话了。</p>
<p>关键点：</p>
<ul>
<li>Promo Code 只能在美国 App Store 兑换，所以你需要创建一个美国 iTunes Store 账户。</li>
<li>创建美国 iTunes Store 的最大障碍是需要有效美国信用卡。</li>
<li>用 Promo Code 进行美国 iTunes Store 账户创建能够规避美国信用卡的要求。<sup><a href="http://wangling.me/2010/11/%e5%a6%82%e4%bd%95%e5%9c%a8-itunes-store-%e4%b8%ad%e5%85%91%e6%8d%a2-promo-code/#footnote_2_321" id="identifier_2_321" class="footnote-link footnote-identifier-link" title="有点&ldquo;鸡生蛋、蛋生鸡&rdquo;的味道，好在能生出来。">3</a></sup></li>
<li>创建美国 iTunes Store 账户和兑换 Promo Code 是一起完成的。</li>
</ul>
<p>所有操作都在 iTunes 中完成。我用的是 Mac OS X 下的 iTunes，如果你用 Windows 的话可能界面稍微有点差异，但我相信操作是一样的。</p>
<p>看图说话：</p>
<ol>
<li>注销<sup><a href="http://wangling.me/2010/11/%e5%a6%82%e4%bd%95%e5%9c%a8-itunes-store-%e4%b8%ad%e5%85%91%e6%8d%a2-promo-code/#footnote_3_321" id="identifier_3_321" class="footnote-link footnote-identifier-link" title="这字眼挺吓人的，其实就是退出">4</a></sup>已登陆账户。</li>
<p><a href="http://wangling.me/wp-content/uploads/2010/11/iTunesScreenSnapz001.png"><img src="http://wangling.me/wp-content/uploads/2010/11/iTunesScreenSnapz001.png" alt="" title="注销已登陆账户" width="476" height="309" class="aligncenter size-full wp-image-322" /></a></p>
<li>切换到美国 iTunes Store。</li>
<p><a href="http://wangling.me/wp-content/uploads/2010/11/iTunesScreenSnapz003.png"><img src="http://wangling.me/wp-content/uploads/2010/11/iTunesScreenSnapz003.png" alt="" title="切换国家" width="228" height="146" class="aligncenter size-full wp-image-323" /></a><br />
<a href="http://wangling.me/wp-content/uploads/2010/11/iTunesScreenSnapz004.png"><img src="http://wangling.me/wp-content/uploads/2010/11/iTunesScreenSnapz004.png" alt="" title="进入美国店" width="228" height="146" class="aligncenter size-full wp-image-324" /></a></p>
<li>兑换 Promo Code。</li>
<p><a href="http://wangling.me/wp-content/uploads/2010/11/iTunesScreenSnapz002.png"><img src="http://wangling.me/wp-content/uploads/2010/11/iTunesScreenSnapz002.png" alt="" title="兑换" width="242" height="388" class="aligncenter size-full wp-image-325" /></a><br />
<a href="http://wangling.me/wp-content/uploads/2010/11/iTunesScreenSnapz005.png"><img src="http://wangling.me/wp-content/uploads/2010/11/iTunesScreenSnapz005.png" alt="" title="输入 Promo Code" width="793" height="470" class="aligncenter size-full wp-image-326" /></a></p>
<li>创建美国 iTunes Store 账户。</li>
<p><a href="http://wangling.me/wp-content/uploads/2010/11/iTunesScreenSnapz006.png"><img src="http://wangling.me/wp-content/uploads/2010/11/iTunesScreenSnapz006.png" alt="" title="创建账户" width="793" height="470" class="aligncenter size-full wp-image-327" /></a><br />
<a href="http://wangling.me/wp-content/uploads/2010/11/iTunesScreenSnapz007.png"><img src="http://wangling.me/wp-content/uploads/2010/11/iTunesScreenSnapz007.png" alt="" title="欢迎" width="793" height="470" class="aligncenter size-full wp-image-328" /></a><br />
<a href="http://wangling.me/wp-content/uploads/2010/11/iTunesScreenSnapz008.png"><img src="http://wangling.me/wp-content/uploads/2010/11/iTunesScreenSnapz008.png" alt="" title="条款" width="793" height="367" class="aligncenter size-full wp-image-329" /></a></p>
<li>填写账户信息。这是关键一步，信用卡一定要选 None。</li>
<p><a href="http://wangling.me/wp-content/uploads/2010/11/iTunesScreenSnapz009.png"><img src="http://wangling.me/wp-content/uploads/2010/11/iTunesScreenSnapz009.png" alt="" title="信用卡及地址" width="793" height="752" class="aligncenter size-full wp-image-330" /></a><br />
<a href="http://wangling.me/wp-content/uploads/2010/11/iTunesScreenSnapz010.png"><img src="http://wangling.me/wp-content/uploads/2010/11/iTunesScreenSnapz010.png" alt="" title="Apple ID" width="793" height="682" class="aligncenter size-full wp-image-331" /></a></p>
<li>完成。</li>
<p><a href="http://wangling.me/wp-content/uploads/2010/11/iTunesScreenSnapz011.png"><img src="http://wangling.me/wp-content/uploads/2010/11/iTunesScreenSnapz011.png" alt="" title="完成" width="793" height="308" class="aligncenter size-full wp-image-332" /></a></p>
</ol>
<div class="footnotes"><ol ><li id="footnote_0_321" class="footnote">更笼统的讲是 iTunes Store</li><li id="footnote_1_321" class="footnote">术语叫“兑换”</li><li id="footnote_2_321" class="footnote">有点“鸡生蛋、蛋生鸡”的味道，好在能生出来。</li><li id="footnote_3_321" class="footnote">这字眼挺吓人的，其实就是退出</li></ol></div><div class="social">			<a href="https://twitter.com/share?url=http%3A%2F%2Fwangling.me%2F2010%2F11%2F%25e5%25a6%2582%25e4%25bd%2595%25e5%259c%25a8-itunes-store-%25e4%25b8%25ad%25e5%2585%2591%25e6%258d%25a2-promo-code%2F" class="twitter-share-button" data-url="http%3A%2F%2Fwangling.me%2F2010%2F11%2F%25e5%25a6%2582%25e4%25bd%2595%25e5%259c%25a8-itunes-store-%25e4%25b8%25ad%25e5%2585%2591%25e6%258d%25a2-promo-code%2F" data-text="如何在 iTunes Store 中兑换 Promo Code" data-via="an0" data-count="none">Tweet</a>
			<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>			<script type="text/javascript" charset="utf-8">
(function(){
  var _w = 86 , _h = 18;
  var param = {
    url:"http%3A%2F%2Fwangling.me%2F2010%2F11%2F%25e5%25a6%2582%25e4%25bd%2595%25e5%259c%25a8-itunes-store-%25e4%25b8%25ad%25e5%2585%2591%25e6%258d%25a2-promo-code%2F",
    type:'6',
    count:'', /**是否显示分享数，1显示(可选)*/
    appkey:'', /**您申请的应用appkey,显示分享来源(可选)*/
    title:'如何在 iTunes Store 中兑换 Promo Code', /**分享的文字内容(可选，默认为所在页面的title)*/
    pic:'', /**分享图片的路径(可选)*/
    ralateUid:'1676354212', /**关联用户的UID，分享微博会@该用户(可选)*/
    rnd:new Date().valueOf()
  }
  var temp = [];
  for( var p in param ){
    temp.push(p + '=' + encodeURIComponent( param[p] || '' ) )
  }
  document.write('<iframe allowTransparency="true" frameborder="0" scrolling="no" src="http://hits.sinajs.cn/A1/weiboshare.html?' + temp.join('&') + '" width="'+ _w+'" height="'+_h+'" style="margin-left:5px;"></iframe>')
})()
</script></div>]]></content:encoded>
			<wfw:commentRss>http://wangling.me/2010/11/%e5%a6%82%e4%bd%95%e5%9c%a8-itunes-store-%e4%b8%ad%e5%85%91%e6%8d%a2-promo-code/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>No Highlight, Please</title>
		<link>http://wangling.me/2010/09/no-highlight-pleas/</link>
		<comments>http://wangling.me/2010/09/no-highlight-pleas/#comments</comments>
		<pubDate>Sat, 11 Sep 2010 00:53:09 +0000</pubDate>
		<dc:creator>an0</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[UIButton]]></category>
		<category><![CDATA[UITableViewCell]]></category>
		<category><![CDATA[Voodo]]></category>

		<guid isPermaLink="false">http://wangling.me/?p=290</guid>
		<description><![CDATA[There is a little annoying thing in Voodo&#8216;s Task List view from the very beginning. When you simply select a task to view the Task Info, the check box of that row will turn into being-checked from unchecked (or unchecked from checked, depending on the current state). It may confuse users to think that they [...]]]></description>
			<content:encoded><![CDATA[<p>There is a little annoying thing in <a href="http://iwonderphone.com/voodo/">Voodo</a>&#8216;s Task List view from the very beginning. When you simply select a task to view the Task Info, the check box of that row will turn into being-checked from unchecked (or unchecked from checked, depending on the current state). It may confuse users to think that they just inadvertently checked (or unchecked) the task.</p>
<p><img src="http://wangling.me/wp-content/uploads/2010/09/Bad-Highlight.png" alt="" title="Bad Highlight" width="642" height="957" class="aligncenter size-full wp-image-307" /></p>
<p>After some reverse engineering, I found it is because when a <strong>UITableViewCell</strong> gets highlighted it also <em>cleverly</em> highlight all its subviews. It is reasonable in some aspects but unfavorable sometimes. And it is especially annoying and confusing in Voodo.</p>
<p>I noticed this problem the first time I do selection in Task List view, however, I left it aside because</p>
<ol>
<li>It is a very small and transient visual defect;</li>
<li>I see the exactly same problem in many other <strong>UITableView</strong> based apps with <strong>UIButton</strong>s inside <strong>UITableViewCell</strong>s;</li>
<li>I didn&#8217;t find a simple fix;</li>
<li>No one complains about it.</li>
</ol>
<p>Yes, not a single one user has ever complained about this problem to me &#8211; I love you Voodoers, you are so forgiving &#8211; except one, my wife.</p>
<p>Though she just began using <a href="http://iwonderphone.com/voodo/">Voodo</a> for her MBA study<sup><a href="http://wangling.me/2010/09/no-highlight-pleas/#footnote_0_290" id="identifier_0_290" class="footnote-link footnote-identifier-link" title="You have so many things to schedule as an MBA student that you just can&amp;#8217;t simply keep them in your head. So almost all her classmates with an iPhone or iPod touch picked up Voodo when I kindly offered them a Promo Code, and they do use it every day.">1</a></sup>, she found quite some little problems with her picky eyes. Maybe it is because she likes painting so is more visually sensitive.</p>
<p>So I decided to fix it, finally.</p>
<p>I first tried several plain old ways with the hope that new SDK make <strong>UITableViewCell</strong> more easily configurable, to no avail. I searched the whole web, to no avail. OK, I said to my self, I know I can do it, maybe I should try every plausible properties and methods of <strong>UITableViewCell</strong>. Once again, I made it, as every time before when I told myself I wanted it done whatever. Determination works!</p>
<p>It turns out very straightforward. You just need to override the two relevant methods of <strong>UITableViewCell</strong> &#8211; <strong>setHighlighted:animated:</strong> and <strong>setSelected:animated:</strong> as follows:<br />
<span class="code"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>setHighlighted<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">BOOL</span><span style="color: #002200;">&#41;</span>highlighted animated<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">BOOL</span><span style="color: #002200;">&#41;</span>animated <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">&#91;</span>super setHighlighted<span style="color: #002200;">:</span>highlighted animated<span style="color: #002200;">:</span>animated<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #11740a; font-style: italic;">// Don't highlight check button to confuse users.</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; self.checkButton.highlighted <span style="color: #002200;">=</span> <span style="color: #a61390;">NO</span>;&nbsp; &nbsp; &nbsp; <br />
<span style="color: #002200;">&#125;</span><br />
<br />
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>setSelected<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">BOOL</span><span style="color: #002200;">&#41;</span>selected animated<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">BOOL</span><span style="color: #002200;">&#41;</span>animated <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">&#91;</span>super setSelected<span style="color: #002200;">:</span>selected animated<span style="color: #002200;">:</span>animated<span style="color: #002200;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #11740a; font-style: italic;">// Don't highlight check button to confuse users.</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; self.checkButton.highlighted <span style="color: #002200;">=</span> <span style="color: #a61390;">NO</span>;<br />
<span style="color: #002200;">&#125;</span></span></p>
<p>Notice that overriding the inanimate peers does not work, maybe because the whole thing occurs during a transition animation.</p>
<p>Hope it is useful to other iOS developers with the same problem. </p>
<div class="footnotes"><ol ><li id="footnote_0_290" class="footnote">You have so many things to schedule as an MBA student that you just can&#8217;t simply keep them in your head. So almost all her classmates with an iPhone or iPod touch picked up <a href="http://iwonderphone.com/voodo/">Voodo</a> when I kindly offered them a Promo Code, and they do use it every day.</li></ol></div><div class="social">			<a href="https://twitter.com/share?url=http%3A%2F%2Fwangling.me%2F2010%2F09%2Fno-highlight-pleas%2F" class="twitter-share-button" data-url="http%3A%2F%2Fwangling.me%2F2010%2F09%2Fno-highlight-pleas%2F" data-text="No Highlight, Please" data-via="an0" data-count="none">Tweet</a>
			<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>			<script type="text/javascript" charset="utf-8">
(function(){
  var _w = 86 , _h = 18;
  var param = {
    url:"http%3A%2F%2Fwangling.me%2F2010%2F09%2Fno-highlight-pleas%2F",
    type:'6',
    count:'', /**是否显示分享数，1显示(可选)*/
    appkey:'', /**您申请的应用appkey,显示分享来源(可选)*/
    title:'No Highlight, Please', /**分享的文字内容(可选，默认为所在页面的title)*/
    pic:'', /**分享图片的路径(可选)*/
    ralateUid:'1676354212', /**关联用户的UID，分享微博会@该用户(可选)*/
    rnd:new Date().valueOf()
  }
  var temp = [];
  for( var p in param ){
    temp.push(p + '=' + encodeURIComponent( param[p] || '' ) )
  }
  document.write('<iframe allowTransparency="true" frameborder="0" scrolling="no" src="http://hits.sinajs.cn/A1/weiboshare.html?' + temp.join('&') + '" width="'+ _w+'" height="'+_h+'" style="margin-left:5px;"></iframe>')
})()
</script></div>]]></content:encoded>
			<wfw:commentRss>http://wangling.me/2010/09/no-highlight-pleas/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>说说 Mac 下的截屏软件</title>
		<link>http://wangling.me/2010/03/%e8%af%b4%e8%af%b4-mac-%e4%b8%8b%e7%9a%84%e6%88%aa%e5%b1%8f%e8%bd%af%e4%bb%b6/</link>
		<comments>http://wangling.me/2010/03/%e8%af%b4%e8%af%b4-mac-%e4%b8%8b%e7%9a%84%e6%88%aa%e5%b1%8f%e8%bd%af%e4%bb%b6/#comments</comments>
		<pubDate>Sun, 28 Mar 2010 07:37:11 +0000</pubDate>
		<dc:creator>an0</dc:creator>
				<category><![CDATA[中文]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Voodo]]></category>

		<guid isPermaLink="false">http://blog.wangling.me/?p=200</guid>
		<description><![CDATA[刚完成了 Voodo 2 的开发，正在写用户手册，其中用到不少截图。 对 app 自身的截图，用真机 + Xcode 就能完美解决，但是对截图做注释就需额外的工具来完成。 一说到对图片进行操作，大家容易先想到 Photoshop, Illustrator，OmniGraffle 等重器，轻一点的也是 Acorn，Pixelmator 等。 这些专业的图片编辑软件确实强大，有些功能只有它们能提供。比如，我试了一圈，最终发现还是 Illustrator 里的 gradient 强大，是唯一一个直接支持 ellipse gradient 效果的，于是在对截图做聚光效果时都是用的 Illustrator。 既然我在对 Voodo 2 做截图时用的是 Xcode，后续工作是图片注释，为什么还需要截屏软件呢？ 这是因为，其实大多截屏软件都自带注释功能，足以应付绝大多数需求；而且因为 Voodo 有同步 Google Calendar 的功能，我需要对 Google Calendar 上的操作进行一些截图。 下面就我用过的一些截屏软件做一个简单的比较（排名无明显先后）： Snagit Snagit 不愧是老牌领头羊，beta 就已经多方面超越其他先入场的小弟了，操作的灵活性，注释工具都是最好的。beta 版免费使用，很爽。 没有单独的 Full Screen Capture，那是因为根本不需要，人家的 All-in-One Capture 太帅了，自动识别 Full Screen，Window，甚至 Region [...]]]></description>
			<content:encoded><![CDATA[<p>刚完成了 <a href="http://blog.iwonderphone.com/2010/03/27/try-voodo-2-early-and-win-promo-code/">Voodo 2</a> 的开发，正在写用户手册，其中用到不少截图。</p>
<p>对 app 自身的截图，用真机 + Xcode 就能完美解决，但是对截图做注释就需额外的工具来完成。</p>
<p>一说到对图片进行操作，大家容易先想到 Photoshop, Illustrator，OmniGraffle 等重器，轻一点的也是 Acorn，Pixelmator 等。</p>
<p>这些专业的图片编辑软件确实强大，有些功能只有它们能提供。比如，我试了一圈，最终发现还是 Illustrator 里的 gradient 强大，是唯一一个直接支持 ellipse gradient 效果的，于是在对截图做聚光效果时都是用的 Illustrator。<br />
<img src="http://blog.wangling.me/wp-content/uploads/2010/03/inactive_search_bar.png" alt="" title="Inactive Search Bar" width="320" height="460" class="aligncenter size-full wp-image-204" /></p>
<p>既然我在对 <a href="http://iwonderphone.com/voodo/">Voodo</a> 2 做截图时用的是 Xcode，后续工作是图片注释，为什么还需要截屏软件呢？</p>
<p>这是因为，其实大多截屏软件都自带注释功能，足以应付绝大多数需求；而且因为 <a href="http://iwonderphone.com/voodo/">Voodo</a> 有同步 Google Calendar 的功能，我需要对 Google Calendar 上的操作进行一些截图。</p>
<p>下面就我用过的一些截屏软件做一个简单的比较（排名无明显先后）：</p>
<h3><a href="http://www.techsmith.com/snagitmac/">Snagit</a></h3>
<p>Snagit 不愧是老牌领头羊，beta 就已经多方面超越其他先入场的小弟了，操作的灵活性，注释工具都是最好的。beta 版免费使用，很爽。<br />
<a href="http://blog.wangling.me/wp-content/uploads/2010/03/Snagit.png"><img src="http://blog.wangling.me/wp-content/uploads/2010/03/Snagit.png" alt="" title="Snagit" width="893" height="710" class="aligncenter size-full wp-image-215" /></a></p>
<p>没有单独的 Full Screen Capture，那是因为根本不需要，人家的 All-in-One Capture 太帅了，自动识别 Full Screen，Window，甚至 Region in Window，还有 Capture Scrolling Area 能对需要滚动才能看全的页面做完整的截图。<br />
<a href="http://blog.wangling.me/wp-content/uploads/2010/03/Snagit-Capturing.png"><img src="http://blog.wangling.me/wp-content/uploads/2010/03/Snagit-Capturing.png" alt="" title="Snagit-Capturing" width="890" height="754" class="aligncenter size-full wp-image-214" /></a></p>
<p>Share 功能尚未成型，暂时只内嵌了 Email 功能。相信正式版肯定会有完善的 Share 功能，看看 <a href="http://www.techsmith.com/">TechSmith</a> 的其他软件就知道了，何况人家还拥有自己的专业多媒体资源分享网站 <a href="http://www.screencast.com/">Screencast.com</a>。</p>
<h3><a href="http://www.ambrosiasw.com/utilities/snapzprox/">Snapz Pro X</a></h3>
<p>Snapz Pro X 没有注释功能，也不带 Share。但就截图的一个“截”字来说，Snapz Pro X 确实可算是最强悍的，算是名副其实。看一个它特有的截图功能：<br />
<a href="http://blog.wangling.me/wp-content/uploads/2010/03/Snapz-Pro-X.png"><img src="http://blog.wangling.me/wp-content/uploads/2010/03/Snapz-Pro-X.png" alt="" title="Snapz Pro X" width="610" height="214" class="aligncenter size-full wp-image-208" /></a></p>
<p>其实把它放到这里并不完全合适，因为 Snapz Pro X 同时还是强大的 Screencast 录制软件。我购买它就是为了给 <a href="http://iwonderphone.com/voodo/">Voodo</a> 录制 <a href="http://blog.iwonderphone.com/2010/03/27/try-voodo-2-early-and-win-promo-code/">demo</a> 及 <a href="http://iwonderphone.com/voodo/">promo video</a>，配合着 iMovie 做的后期制作，一般的效果都能达到。</p>
<h3><a href="http://skitch.com/">Skitch</a></h3>
<p>Skitch 的 UI 设计相当独特，类似一个相框，上传分享特别方便（skitch.com，flickr，Mobile Me 等一应俱全），截图质量和注释工具都不错，而且免费。性价比最高，估计是目前最普及的截图软件。我一般都通过 Skitch 上传到 <a href="http://skitch.com/an00na/nhdsx/iphone-simulator">skitch.com</a> 秀图给别人看。<br />
<a href="http://blog.wangling.me/wp-content/uploads/2010/03/Skitch-Capturing.png"><img src="http://blog.wangling.me/wp-content/uploads/2010/03/Skitch-Capturing.png" alt="" title="Skitch-Capturing" width="508" height="892" class="aligncenter size-full wp-image-210" /></a><br />
<a href="http://blog.wangling.me/wp-content/uploads/2010/03/Skitch.png"><img src="http://blog.wangling.me/wp-content/uploads/2010/03/Skitch.png" alt="" title="Skitch" width="543" height="910" class="aligncenter size-full wp-image-211" /></a></p>
<h3><a href="http://www.realmacsoftware.com/littlesnapper/">LittleSnapper</a></h3>
<p>LittleSnapper 可能是最眼熟的一个名字。软件本身 UI 也算清爽，功能也算齐全，支持多种 Share 方式，包括 flickr，但上手感觉不利索，不像名字取的那样 little。<br />
<a href="http://blog.wangling.me/wp-content/uploads/2010/03/LittleSnapper.png"><img src="http://blog.wangling.me/wp-content/uploads/2010/03/LittleSnapper.png" alt="" title="LittleSnapper" width="958" height="668" class="aligncenter size-full wp-image-220" /></a></p>
<p>我特别不喜欢它的截图方式，定位不如其他三个的十字交叉线来的方便：<br />
<img src="http://blog.wangling.me/wp-content/uploads/2010/03/LittleSnapper-Capturing.png" alt="" title="LittleSnapper-Capturing" width="385" height="741" class="aligncenter size-full wp-image-219" /></p>
<p>不过，LittleSnapper 也有亮点：1) 组织管理功能比较强大，适合剪贴报爱好者；2）强大的网页截图功能，它自带 HTML 解析器，能定位到 Element，适合网页设计者。<br />
<a href="http://blog.wangling.me/wp-content/uploads/2010/03/LittleSnapper-Websnap.png"><img src="http://blog.wangling.me/wp-content/uploads/2010/03/LittleSnapper-Websnap.png" alt="" title="LittleSnapper-Websnap" width="1050" height="747" class="aligncenter size-full wp-image-226" /></a></p>
<h3>系统自带</h3>
<p>最后，不得不说，其实 Mac 系统自带的截图功能对付日常工作已经绰绰有余，截图质量更是没得说。再配上 Preview 做点简单的注释，80%的活都能应付。<br />
<a href="http://blog.wangling.me/wp-content/uploads/2010/03/System-Screen-Capture.png"><img src="http://blog.wangling.me/wp-content/uploads/2010/03/System-Screen-Capture.png" alt="" title="System Screen Capture" width="602" height="817" class="aligncenter size-full wp-image-232" /></a><br />
<a href="http://blog.wangling.me/wp-content/uploads/2010/03/Preview-Annotation.png"><img src="http://blog.wangling.me/wp-content/uploads/2010/03/Preview-Annotation.png" alt="" title="Preview Annotation" width="730" height="900" class="aligncenter size-full wp-image-229" /></a></p>
<div class="social">			<a href="https://twitter.com/share?url=http%3A%2F%2Fwangling.me%2F2010%2F03%2F%25e8%25af%25b4%25e8%25af%25b4-mac-%25e4%25b8%258b%25e7%259a%2584%25e6%2588%25aa%25e5%25b1%258f%25e8%25bd%25af%25e4%25bb%25b6%2F" class="twitter-share-button" data-url="http%3A%2F%2Fwangling.me%2F2010%2F03%2F%25e8%25af%25b4%25e8%25af%25b4-mac-%25e4%25b8%258b%25e7%259a%2584%25e6%2588%25aa%25e5%25b1%258f%25e8%25bd%25af%25e4%25bb%25b6%2F" data-text="说说 Mac 下的截屏软件" data-via="an0" data-count="none">Tweet</a>
			<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>			<script type="text/javascript" charset="utf-8">
(function(){
  var _w = 86 , _h = 18;
  var param = {
    url:"http%3A%2F%2Fwangling.me%2F2010%2F03%2F%25e8%25af%25b4%25e8%25af%25b4-mac-%25e4%25b8%258b%25e7%259a%2584%25e6%2588%25aa%25e5%25b1%258f%25e8%25bd%25af%25e4%25bb%25b6%2F",
    type:'6',
    count:'', /**是否显示分享数，1显示(可选)*/
    appkey:'', /**您申请的应用appkey,显示分享来源(可选)*/
    title:'说说 Mac 下的截屏软件', /**分享的文字内容(可选，默认为所在页面的title)*/
    pic:'', /**分享图片的路径(可选)*/
    ralateUid:'1676354212', /**关联用户的UID，分享微博会@该用户(可选)*/
    rnd:new Date().valueOf()
  }
  var temp = [];
  for( var p in param ){
    temp.push(p + '=' + encodeURIComponent( param[p] || '' ) )
  }
  document.write('<iframe allowTransparency="true" frameborder="0" scrolling="no" src="http://hits.sinajs.cn/A1/weiboshare.html?' + temp.join('&') + '" width="'+ _w+'" height="'+_h+'" style="margin-left:5px;"></iframe>')
})()
</script></div>]]></content:encoded>
			<wfw:commentRss>http://wangling.me/2010/03/%e8%af%b4%e8%af%b4-mac-%e4%b8%8b%e7%9a%84%e6%88%aa%e5%b1%8f%e8%bd%af%e4%bb%b6/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Wedding Voodo</title>
		<link>http://wangling.me/2010/01/wedding-voodo/</link>
		<comments>http://wangling.me/2010/01/wedding-voodo/#comments</comments>
		<pubDate>Sun, 17 Jan 2010 04:55:39 +0000</pubDate>
		<dc:creator>an0</dc:creator>
				<category><![CDATA[iOS]]></category>
		<category><![CDATA[Voodo]]></category>

		<guid isPermaLink="false">http://blog.wangling.me/?p=187</guid>
		<description><![CDATA[中文版 Today is a big day in my life for two things. First, my first iPhone app &#8211; Voodo &#8211; debuts on the App Store. Second, my Wedding with J will take place tonight. While we&#8217;ve received so many sincere blessings and gifts, I think it&#8217;s my responsibility to prepare the best gift for my [...]]]></description>
			<content:encoded><![CDATA[<p><a id="wedding-voodoo-English" href="#wedding-voodoo-Chinese">中文版</a></p>
<p>Today is a big day in my life for two things.</p>
<p>First, my first iPhone app &#8211; <a href="http://iwonderphone.com/voodo/">Voodo</a> &#8211; debuts on the <a href="http://itunes.com/apps/voodo">App Store</a>.</p>
<p>Second, my Wedding with J will take place tonight.</p>
<p>While we&#8217;ve received so many sincere blessings and gifts, I think it&#8217;s my responsibility to prepare the best gift for my bride, our wedding, and our future life. So I purposely scheduled the debut date of Voodo for today.</p>
<p>I am so excited that I can hardly wait for the moment to come.</p>
<div id="language-divider">Chinese Version Below<br />
<hr />以上是<a id="wedding-voodoo-Chinese" href="#wedding-voodoo-English">英文版</a></div>
<p></p>
<h2>婚礼上的魔术（Voodoo）</h2>
<p>今天是个好日子、大日子。</p>
<p>我的第一个 iPhone app ─ <a href="http://iwonderphone.com/voodo/">Voodo</a> ─ 正式登陆 <a href="http://itunes.com/apps/voodo">App Store</a>.</p>
<p>今晚是我和佳的婚礼。</p>
<p>我们收到了许多诚挚的祝福和礼物。但是，我觉得，我有责任和义务为我的新娘、我们的婚礼、以及我们未来的生活，精心准备一份最好的礼物。所以，我特意将 Voodo 的上架日期定为今天。</p>
<p>真是兴奋不已，迫不及待那一刻的到来。</p>
<div class="social">			<a href="https://twitter.com/share?url=http%3A%2F%2Fwangling.me%2F2010%2F01%2Fwedding-voodo%2F" class="twitter-share-button" data-url="http%3A%2F%2Fwangling.me%2F2010%2F01%2Fwedding-voodo%2F" data-text="Wedding Voodo" data-via="an0" data-count="none">Tweet</a>
			<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>			<script type="text/javascript" charset="utf-8">
(function(){
  var _w = 86 , _h = 18;
  var param = {
    url:"http%3A%2F%2Fwangling.me%2F2010%2F01%2Fwedding-voodo%2F",
    type:'6',
    count:'', /**是否显示分享数，1显示(可选)*/
    appkey:'', /**您申请的应用appkey,显示分享来源(可选)*/
    title:'Wedding Voodo', /**分享的文字内容(可选，默认为所在页面的title)*/
    pic:'', /**分享图片的路径(可选)*/
    ralateUid:'1676354212', /**关联用户的UID，分享微博会@该用户(可选)*/
    rnd:new Date().valueOf()
  }
  var temp = [];
  for( var p in param ){
    temp.push(p + '=' + encodeURIComponent( param[p] || '' ) )
  }
  document.write('<iframe allowTransparency="true" frameborder="0" scrolling="no" src="http://hits.sinajs.cn/A1/weiboshare.html?' + temp.join('&') + '" width="'+ _w+'" height="'+_h+'" style="margin-left:5px;"></iframe>')
})()
</script></div>]]></content:encoded>
			<wfw:commentRss>http://wangling.me/2010/01/wedding-voodo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

