<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_BradyChen</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/56616/rss</id><updated>2012-05-28T10:10:24Z</updated><author><name>BradyChen</name><uri>http://www.cnblogs.com/chen1987lei/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chen1987lei/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/56616/rss"/><entry><id>http://www.cnblogs.com/chen1987lei/archive/2012/05/28/2521626.html</id><title type="text">IOS自动化打包介绍</title><summary type="text">来自： 百度搜索研发部http://stblog.baidu-tech.com/?p=1295摘要 随着苹果手持设备用户的不断增加，ios应用也增长迅速，同时随着iphone被越狱越来越多的app 的渠道也不断增多，为各个渠道打包成了一件费时费力的工作，本文提供一种比较智能的打包方式来减少其带来的各种不便。TAGIos打包，app打包，iphone打包，iphone自动化打包，ios打渠道包，iphone自动化打渠道包自动化打包背景介绍1、背景随着ios程序发布的渠道逐渐的增多，为每个渠道打包也成为特别耗费时间和体力的一项技术活了，而这一般大多数都是由rd来完成的。这样就占用了rd很多的开发.</summary><published>2012-05-28T09:16:00Z</published><updated>2012-05-28T09:16:00Z</updated><author><name>BradyChen</name><uri>http://www.cnblogs.com/chen1987lei/</uri></author><link rel="alternate" href="http://www.cnblogs.com/chen1987lei/archive/2012/05/28/2521626.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chen1987lei/archive/2012/05/28/2521626.html"/><content type="html">&lt;p&gt;&lt;strong&gt;来自： 百度搜索研发部&amp;nbsp;http://stblog.baidu-tech.com/?p=1295&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;摘要&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;随着苹果手持设备用户的不断增加，ios应用也增长迅速，同时随着iphone被越狱越来越多的app 的渠道也不断增多，为各个渠道打包成了一件费时费力的工作，本文提供一种比较智能的打包方式来减少其带来的各种不便。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;TAG&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Ios打包，app打包，iphone打包，iphone自动化打包，ios打渠道包，iphone自动化打渠道包&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;自动化打包背景介绍&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1、背景&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;随着ios程序发布的渠道逐渐的增多，为每个渠道打包也成为特别耗费时间和体力的一项技术活了，而这一般大多数都是由rd来完成的。这样就占用了rd很多的开发时间，何不把这些东西写成一个自动化的脚本，然后交给qa 或是 pm来完成这个打包过程了。经过一番调研发现网上这种脚本还是很少的，不过xcode 提供了shell编译工具 xcodebuild 和 ipa打包工具xcrun ，这就有理由让我们利用这两个工具写一个自动化的打包脚本来提高我们的工作效率和自动化程度。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2、ios程序包格式、渠道包格式&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1) 产生多渠道的原因及多渠道带来的打包问题：随着iphone、ipad、itouch等手持设备火热销售，而它们上面的应用也随之火爆了起来，而随之而来的就是以上设备被越狱后就可以在越狱的设备上直接运行ipa程序包 而不用通过appstore去下载，这样一来国内就产生了众多的专门为越狱手机而开设的渠道提供ipa程序包的下载。随着越来越多的渠道，推广时为各个渠道打包就成了一项比较耗费时间和精力的技术活了，因此我们必须寻找一种自动化的方式 让打包变得高效简单。&lt;br /&gt;2)Ios程序包分为appstore二进制文件跟渠道包两种格式&lt;br /&gt;&lt;span&gt;appstore二进制文件&lt;/span&gt;：通过xcode工具可以生成一个.app格式的二进制文件。&lt;br /&gt;渠道包：格式为.ipa格式，在没有自动化打包工具之前都是利用xcode来生成相应的渠道包，而且每次只能生成一个&lt;span&gt;渠道&lt;/span&gt;&lt;span&gt;包&lt;/span&gt;，每次打包之前都得手动该渠道ID，带来的问题就是耗费时间、效率低下、容易出错、增加风险。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3、传统的ios打包方式&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;利用xcode 打包&lt;/p&gt;&lt;p&gt;1)appstore 二进制程序包&lt;br /&gt;打开你的项目，进入&amp;ldquo;Edit Project Settings&amp;rdquo;，进入Configuration页面，选中Release点击下面的Duplicate，复制一个新的配置项出来，命名为Distribution。然后进入Build页面，顶上的Configuration下拉框选中Distribution，下面的Code Signing Identity里面的Any iPhone OS Device后面对应的值选中你的那个Distribution的证书。然后点击&amp;ldquo;Build&amp;rdquo;&amp;ndash;&amp;gt; &amp;ldquo;Build&amp;rdquo; 就可以编译程序了&lt;br /&gt;编译成功后，你就可以在相应的build目录下看到一个.app的二进制文件。&lt;br /&gt;2)渠道ipa包&lt;br /&gt;根据以上步骤同样配置好Distribution 证书 ，然后点击 &amp;ldquo;Build&amp;rdquo;&amp;ndash;&amp;gt; &amp;ldquo;Build and Archive&amp;rdquo; 就可以编译程序了。接着打开&amp;ldquo;Window&amp;rdquo;&amp;rdquo;Organizer&amp;rdquo; 左边栏中选择&amp;rdquo;ARCHIVED APPLICATIONS&amp;rdquo; 然后再右侧列表中选中刚才编译的程序包 再点击右侧右边顶部的&amp;rdquo;Share&amp;rdquo;按钮 保存到磁盘即可。就会生成一个.ipa的文件 即为渠道包。&lt;br /&gt;注意：以上运行设备必须选择&amp;ldquo;Deveice&amp;ldquo;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;4、传统的打包带来的问题&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;耗费时间、耗费体力、效率低下、只能依赖RD来完成、容易出错、发布风险比较高、QA回归确认比较困难、 不智能化。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;自动化打包具体实现&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1、xcodebuild 介绍：&lt;/strong&gt;&lt;/p&gt;&lt;div id="highlighter_691806" class="syntaxhighlighter  "&gt;&lt;div class="lines"&gt;&lt;div class="line alt1"&gt;&lt;p&gt;xcodebuild[-project&lt;br /&gt;][-activetarget][-alltargets][-target]...[-parallelizeTargets][-activeconfiguration][-configuration][-sdk |][=]...[]...&lt;br /&gt;xcodebuild[-version[-sdk |]]&lt;br /&gt;xcodebuild[-showsdks]&lt;br /&gt;xcodebuild[-find ][-sdk |]&lt;br /&gt;xcodebuild[-list]&lt;/p&gt;&lt;span style="font-size: medium;"&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;也可以在终端输入：xcodebuild &amp;ndash;help 或 &amp;ndash;h查看具体的选项&lt;br /&gt;显示xcodebuildversion：xcodebuild &amp;ndash;version&lt;br /&gt;显示当前系统安装的sdk：xcodebuild &amp;ndash;showsdks&lt;br /&gt;显示当前目录下project Information：xcodebuild &amp;ndash;list&lt;br /&gt;&lt;span&gt;需要注意的是：执行以上命令时必须把位置定位在ios项目文件的根目录下 否则会提示找不相关命令的。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2、xcrun 介绍：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;此工具主要用于将app文件打包成ipa格式的程序包。（主要用于已越狱手机）。&lt;br /&gt;具体用法如下：&lt;/p&gt;&lt;div id="highlighter_705690" class="syntaxhighlighter  "&gt;&lt;div class="lines"&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="plain"&gt;/usr/bin/xcrun -sdk iphoneos PackageApplication &amp;ndash;&lt;/code&gt;&lt;code class="functions"&gt;v&lt;/code&gt;&amp;nbsp;&lt;code class="plain"&gt;[{TARGET}.app] -o [{TARGET}.ipa] --sign [{Iphone Distribution:xxx}] &amp;ndash;embed [{xxx.mobileprovision}]&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;其中：-v 对应的是app文件的绝对相对路径 &amp;ndash;o 对应ipa文件的路径跟文件名 &amp;ndash;sign&lt;br /&gt;对应的是 发布证书中对应的公司名或是个人名&amp;nbsp; &amp;ndash;embed 对应的是发布证书文件&lt;br /&gt;注意如果对应的Distribution 配置中已经配置好了相关证书信息的话 &amp;ndash;sign 和 &amp;ndash;embed可以忽略&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3、具体方案&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;a)从源程序一次性打出所有渠道的ipa包 跟appstore的二进制包&lt;br /&gt;为了让自动化脚本执行一次把所有的渠道包都打好，所以必须有一个配置文件用来存储所有的渠道名跟渠道号，而项目文件中也应该有个对应存储当前渠道号的文件，每次程序都从这个存放渠道号的文件中读取渠道号即可，&lt;span&gt;大概的思路就是利用脚本循环执行打包过程，而每次打包前都通过脚本修改项目中存放渠道号的文件为当前循环的最新渠道号，让后逐个打包。&lt;br /&gt;注：具体事例见附录&lt;/span&gt;&lt;br /&gt;b)提供一个ipa格式的母包 从母包生成其它所有的渠道包跟 appstore 包&lt;br /&gt;qa的一些疑问，如何确保所有的渠道包就是他们验证过的那份代码呢？&lt;br /&gt;的确，以上代码每次都是重新对程序进行打包，可qa往往测试验证的只有一个包，如果个个去验证无意中之中又增加了qa的工作量哈！！而且风险也不可控。因此基于上面的问题我们想出了一下办法：&lt;span&gt;qa只验证一个程序包（即母包）如果这个包通过验证 我们就通过母包去生成其它渠道的包，这样一来qa也不用确认那么多的渠道包了，风险也得到了有效的控制。&lt;/span&gt;&lt;br /&gt;可能你会问：用一个包生成其他的包可行么？？&lt;br /&gt;原因是这样的：因为每个渠道只是渠道号发生变化，而其他的内容又不会发生变化，而我们的渠道号又是存储在sourceid.dat这个文件中的，所以只要改变母包中的sourceid.dat文件的内容即可，而ipa包又是同zip格式进行压缩，&lt;span&gt;所以基本思路就是通过zip先对母包进行解压，然后改变sourceid.dat的内容 最后再用zip进行压缩成相应的渠道包即可。&lt;/span&gt;&lt;br /&gt;Ipa包的目录：&lt;a href="http://stblog.baidu-tech.com/wp-content/uploads/wp-display-data.php?filename=11322127480.jpg&amp;amp;type=image%2Fjpeg&amp;amp;width=159&amp;amp;height=46"&gt;&lt;img class="alignleft size-full wp-image-1298" title="1" src="http://stblog.baidu-tech.com/wp-content/uploads/wp-display-data.php?filename=11322127480.jpg&amp;amp;type=image%2Fjpeg&amp;amp;width=159&amp;amp;height=46" alt="" width="159" height="46" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span&gt;注：具体事例见附录&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;一些问题&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;当有些shell命令在mac的终端中运行不通过时，请确保你的shell脚本是在mac环境下编写的而不是同xp等其他环境中copy过来的。因为mac跟xp的编码是不一样所以会有问题。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;总结：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;通过从母包打出其他渠道的包这种方法：得到以下好处&lt;/p&gt;&lt;p&gt;i.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 降低了rd的工作量，一起qa的工作量。&lt;/p&gt;&lt;p&gt;ii.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 让测试发布程序时的风险得到了控制。&lt;/p&gt;&lt;p&gt;iii.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 提高了打包发布工作效率。（几十个包 只需短短的几分钟）。&lt;/p&gt;&lt;p&gt;iv.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 提高了自动化。&lt;/p&gt;&lt;p&gt;v.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 不依赖mac 以及xcode环境 直接在linux 下即可完成 从母包生成其它包&lt;/p&gt;&lt;p&gt;&lt;strong&gt;附录&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;利用xcode环境一次生成所有包的shell 脚本代码：&lt;/strong&gt;&lt;/p&gt;&lt;div id="highlighter_304355" class="syntaxhighlighter  "&gt;&lt;div class="lines"&gt;&lt;div class="line alt1"&gt;&lt;p&gt;#!/bin/sh&lt;/p&gt;&lt;p&gt;xcodebuild clean -configuration Distribution //clean项目&lt;/p&gt;&lt;p&gt;distDir="/Users/xxxx/dist"&lt;br /&gt;releaseDir="build/Distribution-iphoneos"&lt;br /&gt;version="1_0_0"&lt;br /&gt;rm -rdf "$distDir"&lt;br /&gt;mkdir "$distDir"&lt;br /&gt;for line in $(cat data.dat)        //读取所有渠道号data.dat文件&lt;br /&gt;do&lt;br /&gt;ipafilename=`echo $line|cut -f1 -d':'` //渠道名&lt;br /&gt;sourceid=`echo $line|cut -f2 -d':'`    //渠道号&lt;br /&gt;echo "ipafilename=$ipaname"&lt;br /&gt;echo "sourceid=$sourceid"&lt;br /&gt;targetName="youtargename"   //项目名称(xcode左边列表中显示的项目名称)&lt;br /&gt;echo "sourceid=$sourceid"&lt;br /&gt;echo "ipafilename=$ipafilename"&lt;br /&gt;echo "$sourceid" &amp;gt; sourceid.dat&lt;br /&gt;echo "sourceid.dat: "&lt;br /&gt;cat sourceid.dat&lt;br /&gt;rm -rdf "$releaseDir"&lt;/p&gt;&lt;p&gt;ipapath="${distDir}/${targetName}_${version}_from_${sourceid}.ipa"&lt;/p&gt;&lt;p&gt;echo "***开始build app文件***"&lt;br /&gt;xcodebuild -target "$targetName" -configuration Distribution  -sdk iphoneos build&lt;br /&gt;appfile="${releaseDir}/${targetName}.app"&lt;br /&gt;if [ $sourceid == "appstore" ]&lt;br /&gt;then&lt;br /&gt;cd $releaseDir&lt;br /&gt;zip -r "${targetName}_${ipafilename}_${version}.zip" "${targetName}.app"&lt;br /&gt;mv "${targetName}_${ipafilename}.zip" $distDir 2&amp;gt; /dev/null&lt;br /&gt;cd ../..&lt;br /&gt;else&lt;br /&gt;echo "***开始打ipa渠道包****"&lt;br /&gt;/usr/bin/xcrun -sdk iphoneos PackageApplication -v "$appfile" -o "$ipapath" --sign "iPhone Distribution:xxxxxx"&lt;br /&gt;fi&lt;br /&gt;done&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;span&gt;注：以上的data.dat文件为存放渠道号列表的文件 其格式为：3g:1001b 即 （渠道名：渠道号） sourceid.dat 为项目文件中存放渠道号的文件（内容只有一个渠道号）。当然了上面脚本只是说明了下如何利用xcodebuild 和 xcrun 进行打包 以及自动打包的一个逻辑，shell脚本好的同学可以自由发挥哈。。。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;从ipa格式的母包生成其它渠道包的shell脚本实例：&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;p&gt;#!/bin/sh&lt;br /&gt;sourceipaname="母包名.ipa"&lt;br /&gt;appname=&amp;rdquo;app文件名.app&amp;rdquo;  //加压后Pauload目录项.app文件名需要根据自己的项目修改&lt;br /&gt;distDir="/Users/lxxx/Qa"   //打包后文件存储目录&lt;br /&gt;version="1.0.0"&lt;br /&gt;rm -rdf "$distDir "&lt;br /&gt;mkdir "$distDir" unzip $sourceipaname     //解压母包文件&lt;br /&gt;for line in $(cat data.dat)   //读取渠道号文件并进行循环&lt;br /&gt; do&lt;br /&gt;ipafilename=`echo $line|cut -f1 -d':'`&lt;br /&gt; sourceid=`echo $line|cut -f2 -d':'`&lt;br /&gt;echo "ipafilename=$ipaname"&lt;br /&gt;echo "sourceid=$sourceid"&lt;br /&gt; targetName="ipa包名"&lt;br /&gt; echo "sourceid=$sourceid"&lt;br /&gt; echo "ipafilename=$ipafilename"&lt;br /&gt; cd Payload&lt;br /&gt; cd $appname&lt;br /&gt;   echo "replace sourceid.dat before: "&lt;br /&gt; cat sourceid.dat&lt;br /&gt; echo "$sourceid" &amp;gt; sourceid.dat&lt;br /&gt; echo "replace sourceid.dat after: "&lt;br /&gt; cat sourceid.dat&lt;br /&gt; if [ $sourceid == "appstroe" ]&lt;br /&gt;then&lt;br /&gt; cd ..&lt;br /&gt;zip -r "${targetName}_${version}_from_${sourceid}.zip" $appname //appstore二进制文件&lt;/p&gt;&lt;p&gt;mv "${targetName}_${version}_from_${sourceid}.zip" $distDir&lt;br /&gt; cd ..&lt;br /&gt; else&lt;br /&gt; cd ../..&lt;br /&gt; zip -r "${targetName}_${version}_from_${sourceid}.ipa" Payload   //打成其他渠道的包&lt;br /&gt;mv "${targetName}_${version}_from_${sourceid}.ipa" $distDir&lt;br /&gt; fi&lt;br /&gt; done rm -rdf Payload&lt;/p&gt;&lt;/div&gt;&lt;div&gt;注：以上data.dat也是用来存储所有渠道号的，sourceipaname就是通过qa验证的母包，appname为ipa包加压后Payload 目录下的app文件名并且以上所有文件必须与脚本文件保持在同一目录下以及在mac环境中执行。&lt;/div&gt;&lt;div class="tpc_content"&gt;&amp;nbsp;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/chen1987lei/aggbug/2521626.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/chen1987lei/archive/2012/05/28/2521626.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/chen1987lei/archive/2012/05/28/2521086.html</id><title type="text">iOS5.1下emoji表情显示方框的解决办法</title><summary type="text">iOS5.1下emoji表情显示方框的解决办法 在iOS5.1的部分设备上,emoji表情无法正常显示.我测试了一下,iOS5.1(9B176 foriPhone4)无法正常显示emoji,全部是方框iOS5.1(9B179 for iPhone 4S)上面可以正常显示emoji.原因是iOS4上面的emoji用的是softbank的编码,到iOS5以后,emoji被放进了Unicode6.0,导致原来的老编码可能存在部分不兼容现象.解决办法也很简单,在iOS5上面全部用新编码,在iOS4及以下全部用老编码.因为有些iOS5.1上可以正常显示，有些不行。根据我们的测试情况，5.x的全部用新编码</summary><published>2012-05-28T03:42:00Z</published><updated>2012-05-28T03:42:00Z</updated><author><name>BradyChen</name><uri>http://www.cnblogs.com/chen1987lei/</uri></author><link rel="alternate" href="http://www.cnblogs.com/chen1987lei/archive/2012/05/28/2521086.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chen1987lei/archive/2012/05/28/2521086.html"/><content type="html">&lt;h1 id="subject_tpc"&gt;iOS5.1下emoji表情显示方框的解决办法 &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;div class="tpc_content"&gt;&lt;div id="p_tpc" class="c"&gt;&amp;nbsp;&lt;/div&gt;&lt;div id="read_tpc" class="f14"&gt;在iOS5.1的部分设备上,emoji表情无法正常&lt;span id="rlt_3"&gt;显示&lt;/span&gt;.我&lt;span id="rlt_5"&gt;测试&lt;/span&gt;了一下,iOS5.1(9B176 for&amp;nbsp;&lt;span id="rlt_1"&gt;iPhone&lt;/span&gt;&amp;nbsp;4)无法正常显示emoji,全部是方框&lt;br /&gt;iOS5.1(9B179 for iPhone 4S)上面可以正常显示emoji.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;原因是iOS4上面的emoji用的是softbank的编码,到iOS5以后,emoji被放进了Unicode6.0,导致原来的老编码可能存在部分不兼容现象.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;解决办法也很简单,在iOS5上面全部用新编码,在iOS4及以下全部用老编码.&lt;br /&gt;&lt;br /&gt;因为有些iOS5.1上可以正常显示，有些不行。&lt;span&gt;&lt;strong&gt;根据我们的测试情况，5.x的全部用新编码，4.x及以下全部用老编码就没&lt;span id="rlt_2"&gt;问题&lt;/span&gt;了&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;编码转换请看&lt;span id="rlt_4"&gt;苹果&lt;/span&gt;自己的转换表:&amp;nbsp;&lt;a id="url_1" href="http://opensource.apple.com/source/ICU/ICU-461.13/icuSources/data/translit/Any_SoftbankSMS.txt" target="_blank"&gt;http://opensource.apple.com/source/ICU/ICU-461.13/icuSources/data/translit/Any_SoftbankSMS.txt&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;其中左边的是Unicode新编码,右边是softbank的老编码,请自行转换&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;详细的Emoji图片请看这个&amp;nbsp;&lt;a href="http://code.iamcal.com/php/emoji/"&gt;http://code.iamcal.com/php/emoji/&lt;/a&gt;&lt;/div&gt;&lt;div class="f14"&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="f14"&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="f14"&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="f14"&gt;苹果官方转换表&lt;/div&gt;&lt;div class="f14"&gt;&lt;a href="http://opensource.apple.com/source/ICU/ICU-461.13/icuSources/data/translit/Any_SoftbankSMS.txt"&gt;http://opensource.apple.com/source/ICU/ICU-461.13/icuSources/data/translit/Any_SoftbankSMS.txt&lt;/a&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&amp;nbsp;emojiArray = [[NSArray alloc] initWithObjects:&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span&gt;@"\U0001F61A"&lt;/span&gt;,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span&gt;@"\U0001F60C"&lt;/span&gt;,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span&gt;@"\U0001F604"&lt;/span&gt;,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span&gt;@"\u263A"&lt;/span&gt;,&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;代码中直接这样写就可以&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/chen1987lei/aggbug/2521086.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/chen1987lei/archive/2012/05/28/2521086.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/chen1987lei/archive/2012/05/19/2509058.html</id><title type="text">分类分享一下，关于push推送的经验吧</title><summary type="text">从自己的产品服务器，发送消息给苹果服务器开始， 苹果服务器开始尝试向iphone设备推送消息， 当次失败的话， 会重试一段时间， 直到超时，这个时间可以自己设置，这条消息被丢弃。 如果消息发送失败， 原因是iphone设备已经删除了客户端的话， 可以从苹果接收失败消息和对应的设备id的列表。 （测试发现，断网和在系统设置里关闭push开关的，苹果不会给反馈） 苹果的服务器和iphone设备push的链接介绍， TLS链接15分钟检查一次，确认链接是否正常 iphone设备，运行软件时， 调用registerDeviceToken方法，可以向苹果服务器注册设备， 这里不论系统设置里面的push开</summary><published>2012-05-19T10:16:00Z</published><updated>2012-05-19T10:16:00Z</updated><author><name>BradyChen</name><uri>http://www.cnblogs.com/chen1987lei/</uri></author><link rel="alternate" href="http://www.cnblogs.com/chen1987lei/archive/2012/05/19/2509058.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chen1987lei/archive/2012/05/19/2509058.html"/><content type="html">&lt;p&gt;&lt;span style="color: #000000;"&gt;从自己的&lt;span id="rlt_4" style="border-bottom-color: #fa891b; border-bottom-width: 1px; border-bottom-style: solid; cursor: pointer;"&gt;产品&lt;/span&gt;&lt;span id="rlt_2" style="border-bottom-color: #fa891b; border-bottom-width: 1px; border-bottom-style: solid; cursor: pointer;"&gt;服务&lt;/span&gt;器，发送消息给&lt;span id="rlt_1" style="border-bottom-color: #fa891b; border-bottom-width: 1px; border-bottom-style: solid; cursor: pointer;"&gt;苹果&lt;/span&gt;服务器开始， &lt;br /&gt;苹果服务器开始尝试向iphone设备推送消息， 当次失败的话， 会重试一段时间， 直到超时，这个时间可以自己设置，这条消息被丢弃。 &lt;br /&gt;如果消息发送失败， &lt;br /&gt;原因是iphone设备已经删除了客户端的话， 可以从苹果接收失败消息和对应的设备id的列表。 &lt;br /&gt;（&lt;span id="rlt_6" style="border-bottom-color: #fa891b; border-bottom-width: 1px; border-bottom-style: solid; cursor: pointer;"&gt;测试&lt;/span&gt;发现，断网和在系统设置里关闭push开关的，苹果不会给反馈） &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;苹果的服务器和iphone设备push的链接介绍， TLS链接15分钟检查一次，确认链接是否正常 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;iphone设备，运行&lt;span id="rlt_3" style="border-bottom-color: #fa891b; border-bottom-width: 1px; border-bottom-style: solid; cursor: pointer;"&gt;软件&lt;/span&gt;时， &lt;br /&gt;调用registerDeviceToken方法，可以向苹果服务器注册设备， &lt;br /&gt;这里不论系统设置里面的push开关是否开启，都能取到（iphone4，ios5系统确认是这样）， &lt;br /&gt;可以检测RemotionNotificationType属性判断是否开启push开关， RemotionNotificationType 具体怎么写不记得了， &lt;br /&gt;囧~~ &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;可以在applicationDidBecomeAction &lt;span id="rlt_5" style="border-bottom-color: #fa891b; border-bottom-width: 1px; border-bottom-style: solid; cursor: pointer;"&gt;事件&lt;/span&gt;里，不论是第一次启动，还是从后台恢复都会调用， &lt;br /&gt;检查push开关设置，保持push开关设置和产品服务器的统一 &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/chen1987lei/aggbug/2509058.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/chen1987lei/archive/2012/05/19/2509058.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/chen1987lei/archive/2012/05/19/2509057.html</id><title type="text">自定义UITabbarController引发的血案</title><summary type="text">nested push animation can result in corrupted navigation bar 嵌套的navigation动画会造成 navigation bar 错误， 具体表现为上一层的titleview 和这一层重叠， navigationbaritem 维持上一层的左按钮， 右按钮 、、、系统警告提示nested push animation can result in corrupted navigation bar ， 大家遇到过这种情况吗？？ 嵌套的动画， 是什么意思呢， 为什么会这样， 要怎么解决结贴~~~~~~~~~~~~~~~~~~~~~~~~~~</summary><published>2012-05-19T10:15:00Z</published><updated>2012-05-19T10:15:00Z</updated><author><name>BradyChen</name><uri>http://www.cnblogs.com/chen1987lei/</uri></author><link rel="alternate" href="http://www.cnblogs.com/chen1987lei/archive/2012/05/19/2509057.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chen1987lei/archive/2012/05/19/2509057.html"/><content type="html">&lt;p&gt;nested push animation can result in corrupted navigation bar 嵌套的navigation动画会造成&amp;nbsp; navigation bar&amp;nbsp; 错误， 具体表现为上一层的titleview 和这一层重叠， navigationbaritem&amp;nbsp; 维持上一层的左按钮， 右按钮 、、、系统警告提示nested push animation can result in corrupted navigation bar ， 大家遇到过这种情况吗？？ 嵌套的动画， 是什么意思呢， 为什么会这样， 要怎么解决&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;结贴~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&lt;/p&gt;&lt;p&gt;有一天，从头到尾分析了整个项目的代码， 最后确认问题根源&amp;mdash;&amp;mdash;自定义UITabbarController引发的血案&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;项目中使用了自定义的UITabbarController ，修改里面的tabbar视图， 在这个UITabbarController 中实现了viewWillAppear方法， 里面没有加super viewWillAppear ， 结果导致了这一连串的问题，&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 整个软件里面，都会出现弹一次模态窗口，导航视图就会动画乱序，&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 导航视图前进后退过快， 导致导航栏嵌套， 一个上面覆盖另一个。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;此遗憾了结&lt;/p&gt;&lt;img src="http://www.cnblogs.com/chen1987lei/aggbug/2509057.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/chen1987lei/archive/2012/05/19/2509057.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/chen1987lei/archive/2012/05/16/2503968.html</id><title type="text">10个必需的iOS开发工具和资源</title><summary type="text">界面总不是一件很容易事，尤其是iPhone/iPad的界面，做过iOS开发的程序员，一定会感到开发iPhone/iPad的界面是一件多么不容易的事。下面的文章来自10 Essential iOS Developer Tools &amp; Resources， 这个文章介绍了十个iOS开发的基础性工具和资源，其一定会很有效地帮你做iOS的开发。（在这里，我再闲扯一句，虽然Android的开发好像整整 XML文件界面就出来了，其明显比iOS的开发要容易很多，但是我还是觉得iOS的生命力要强过Android，看看Android今天的应用就知道，有 时候入门门槛低不是一些好事，大多数的程序员搞出来的</summary><published>2012-05-16T06:38:00Z</published><updated>2012-05-16T06:38:00Z</updated><author><name>BradyChen</name><uri>http://www.cnblogs.com/chen1987lei/</uri></author><link rel="alternate" href="http://www.cnblogs.com/chen1987lei/archive/2012/05/16/2503968.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chen1987lei/archive/2012/05/16/2503968.html"/><content type="html">&lt;div align="center"&gt;&lt;ins&gt;&lt;ins id="aswift_0_anchor"&gt;&lt;iframe id="aswift_0" name="aswift_0" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="468" height="60"&gt;&lt;/iframe&gt;&lt;/ins&gt;&lt;/ins&gt;&lt;/div&gt;&lt;p&gt;界面总不是一件很容易事，尤其是iPhone/iPad的界面，做过iOS开发的程序员，一定会感到开发iPhone/iPad的界面是一件多么不容易的事。下面的文章来自&lt;strong&gt;&lt;a href="http://alexefish.com/2011/07/10-essential-ios-developer-tools-resources/"&gt;10 Essential iOS Developer Tools &amp;amp; Resources&lt;/a&gt;&lt;/strong&gt;， 这个文章介绍了十个iOS开发的基础性工具和资源，其一定会很有效地帮你做iOS的开发。（在这里，我再闲扯一句，虽然Android的开发好像整整 XML文件界面就出来了，其明显比iOS的开发要容易很多，但是我还是觉得iOS的生命力要强过Android，看看Android今天的应用就知道，有 时候入门门槛低不是一些好事，大多数的程序员搞出来的Android代码和软件简直令人作呕，就像不是每个人都能烧得手好菜一样。（&amp;ldquo;食客与大厨&amp;rdquo;，也许偏激，但值得你我思考），又把蛋扯远了）&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1. Omnigraffle + Ultimate iPhone Stencil&lt;/strong&gt;&amp;nbsp;&lt;br /&gt;&lt;img src="http://images.weiphone.com/attachments/Day_110802/7_340302_ca02bf73c72e200.jpg" alt="" border="0" /&gt;&amp;nbsp;&lt;br /&gt;Omnigraffle 是一个很强大的像Microsoft Viso的一个软件，其只能于运行在Mac OS X和iPad平台之上。它曾获得2002年的苹果设计奖。在这里，你可以下载 Ultimate iPhone Stencil ，然后使用Omnigraffle 来非常快地制作你的iPhone应用的演示界面。（查看了一下Omnigraffle 的iPad版，真贵，$49.99。）。&amp;nbsp;&lt;br /&gt;&lt;a href="http://www.omnigroup.com/products/omnigraffle/"&gt;Omnigraffle Link&lt;/a&gt;,&amp;nbsp;&lt;a href="http://graffletopia.com/stencils/413"&gt;Ultimate iPhone Stencil Link&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2. Glyphish Icons&lt;/strong&gt;&amp;nbsp;&lt;br /&gt;&lt;img src="http://images.weiphone.com/attachments/Day_110802/7_340302_38ea21bd72a9d90.jpg" alt="" border="0" /&gt;&amp;nbsp;&lt;br /&gt;你可能能从上面的这些图标中看到Flipboard 和 Twitter 在iOS上的应用使用了其中的一些图标。是的，这些个小图标对你的开发很有帮助。作者强烈推荐你花$25去购买 Glyphish 的Pro版。当然啦，你都能花$99/year开发iOS的程序，你还怕花这区区的25刀？&amp;nbsp;&lt;br /&gt;&lt;a href="http://glyphish.com/"&gt;Glypish Link&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3. teehan + lax iPhone 4 GUI PSD&lt;/strong&gt;&amp;nbsp;&lt;br /&gt;&lt;img src="http://images.weiphone.com/attachments/Day_110802/7_340302_a68fa24cb257c77.jpg" alt="" border="0" /&gt;&amp;nbsp;&lt;br /&gt;teehan+lax 是一个加拿大多伦多的Da1L1商。他们经常发布一些他们自己内部用的资源， iPhone 4 GUI PSD 就是其中的一个，这是一个PSD资源文件其包括了iPhone 4的UI 视图控制和一般的UI元件。这是免费让你下载的。&amp;nbsp;&lt;br /&gt;&lt;a href="http://www.teehanlax.com/blog/iphone-4-gui-psd-retina-display/"&gt;teehan + lax iPhone 4 GUI PSD Link&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;4. Stanford University iPhone Development Lectures&lt;/strong&gt;&amp;nbsp;&lt;br /&gt;&lt;img src="http://images.weiphone.com/attachments/Day_110802/7_340302_5f4ff304b927e0d.jpg" alt="" border="0" /&gt;&amp;nbsp;&lt;br /&gt;斯坦福大学iPhone开发教程，这可能是iOS开的圣经级的课程了，你可以从 iTunes U上下载，当然，国内的各大门户公开课也有这个视频，还有中文字幕。比如网易公开课：&lt;a href="http://v.163.com/special/opencourse/iphonekaifa.html"&gt;http://v.163.com/special/opencourse/iphonekaifa.html&lt;/a&gt;&amp;nbsp;&lt;br /&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=384233225"&gt;iTunes U Link&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;5. 71 Squared&lt;/strong&gt;&amp;nbsp;&lt;br /&gt;&lt;img src="http://images.weiphone.com/attachments/Day_110802/7_340302_728d0a55e7d911e.jpg" alt="" border="0" /&gt;&amp;nbsp;&lt;br /&gt;如果你要搞iPhone的游戏开发，那么你可看看 71 Squared 上的资源和教程，让你从零开始搞iPhone游戏。不知道你有没有听说过 Tiny Wings 这个由 Andreas Illiger 开发的很漂亮的并获得很大成功的游戏？Andreas 就是从这个网站上学习开发的。这个网站的的资源太丰富了，你绝对不能错过。&amp;nbsp;&lt;br /&gt;&lt;a href="http://www.71squared.com/iphone-tutorials/"&gt;71 Squared Link&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;6. Charles&lt;/strong&gt;&amp;nbsp;&lt;br /&gt;&lt;img src="http://images.weiphone.com/attachments/Day_110802/7_340302_0af4d6c385e805e.jpg" alt="" border="0" /&gt;&amp;nbsp;&lt;br /&gt;如果你想让你的应用发出一个HTTP请求，并通过仿真器来调试，这恐怕是一件很难的事。 Charles 是这样一个工具其强在让你看到所有的和互联网交互的请求。这个无价的可以让你节省巨大的时间来debug你的应用。当然，要价$50啊，很不便宜，但是还是那句话，$99刀一年你都花了，你还在乎这点钱？&amp;nbsp;&lt;br /&gt;&lt;a href="http://www.charlesproxy.com/"&gt;Charles Link&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;7. ASIHTTPRequest&lt;/strong&gt;&amp;nbsp;&lt;br /&gt;&lt;img src="http://images.weiphone.com/attachments/Day_110802/7_340302_b48f2651d0a3bed.jpg" alt="" border="0" /&gt;&lt;br /&gt;和 Charles一样， ASIHTTPRequest 也是一个强大的封装其由 CFNetwork API构造。如果你想要从你的iPhone上调用一个Web API，那么 ASIHTTPRequest 一定会省你很多事。这个东西的文档极端的不错，并有成千上万的有用的功能几乎覆盖了所有的事，比如： PUT, DELETE, GET, POST 全都没有问题。&amp;nbsp;&lt;br /&gt;&lt;a href="http://allseeing-i.com/ASIHTTPRequest/"&gt;ASIHTTPRequest Link&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;8. Stack Overflow&lt;/strong&gt;&amp;nbsp;&lt;br /&gt;&lt;img src="http://images.weiphone.com/attachments/Day_110802/7_340302_e31c044a3b84741.jpg" alt="" border="0" /&gt;&amp;nbsp;&lt;br /&gt;Stack Overflow 这个东西不用说了吧。我个人认为这是这个世界上最佳的问问题的地方，就算你不问，你就上去查一查，你也能看到一大堆已经有人问过的问题。通过问题来加深认识，是进阶的要做的事。在stakeoverflow面前，什么CSDN，it-pub，等等国内的技术问题解决网站完全不值一题。&amp;nbsp;&lt;br /&gt;&lt;a href="http://stackoverflow.com/"&gt;Stack Overflow Link&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;9. MBProgressHUD&lt;/strong&gt;&amp;nbsp;&lt;br /&gt;&lt;img src="http://images.weiphone.com/attachments/Day_110802/7_340302_0f0e94b4d084c7f.jpg" alt="" border="0" /&gt;&amp;nbsp;&lt;br /&gt;MBProgressHUD 是一个用来做没有文档的 UIProgressHUD UIKit 类的替代品。其就是用来显示一个正在下载中的指示器。这个东西很容易使用，并且有很好的文档，你需要几分钟就可以把其集成到你的应用中。你可以到 github repository上查看其资料。作者号称其99%的应用都使用了这个东西。&amp;nbsp;&lt;br /&gt;&lt;a href="http://https//github.com/jdg/MBProgressHUD"&gt;MBProgressHUD Link&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;10. Apple Documentation&lt;/strong&gt;&amp;nbsp;&lt;br /&gt;&lt;img src="http://images.weiphone.com/attachments/Day_110802/7_340302_37df1ba7c1f5485.jpg" alt="" border="0" /&gt;&lt;br /&gt;作者说，最后一个资源也是最好的一个，那就是苹果的官方文档 Apple Documentation，示例代码，视频，各种类的参考文档，你在开发过程中绝对无法离开它。在你去Stack Overflow和Google的时候，你应该先去看看这个文档。&amp;nbsp;&lt;br /&gt;&lt;a href="http://developer.apple.com/devcenter/ios/index.action"&gt;iOS Documentation Link&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/chen1987lei/aggbug/2503968.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/chen1987lei/archive/2012/05/16/2503968.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/chen1987lei/archive/2012/04/17/2453834.html</id><title type="text">iphone程序启动互相调用， 打开其他程序</title><summary type="text">在iphone程序打开其它程序（Launching Other Apps within an iPhone Application）你可以使用openUrl打开一些程序，不只是浏览器，我们将在下面的例子中演示这些这些应用：打开浏览器打开google map打开email拨号程序发短信程序打开appstoreLaunch Google Maps到googlemap的URL格式是:http://maps.google.com/maps?q=${QUERY_STRING}你可以更改QUERY_STRING改变位置信息:NSString* searchQuery = @"the postio</summary><published>2012-04-17T08:02:00Z</published><updated>2012-04-17T08:02:00Z</updated><author><name>BradyChen</name><uri>http://www.cnblogs.com/chen1987lei/</uri></author><link rel="alternate" href="http://www.cnblogs.com/chen1987lei/archive/2012/04/17/2453834.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chen1987lei/archive/2012/04/17/2453834.html"/><content type="html">&lt;div class="article_title"&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="article_title"&gt;&amp;nbsp;&lt;span class="link_title"&gt;&lt;a href="http://blog.csdn.net/gisergising/article/details/6304107"&gt;在iphone程序打开其它程序（Launching Other Apps within an iPhone Application）&lt;/a&gt;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;div id="article_content" class="article_content"&gt;&lt;p&gt;你可以使用openUrl打开一些程序，不只是浏览器，我们将在下面的例子中演示这些这些应用：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;打开浏览器&lt;/li&gt;&lt;li&gt;打开google map&lt;/li&gt;&lt;li&gt;打开email&lt;/li&gt;&lt;li&gt;拨号程序&lt;/li&gt;&lt;li&gt;发短信程序&lt;/li&gt;&lt;li&gt;打开appstore&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Launch Google Maps&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;到googlemap的URL格式是:&lt;/p&gt;&lt;p&gt;&lt;code&gt;http://maps.google.com/maps?q=&lt;strong&gt;${QUERY_STRING}&lt;/strong&gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;你可以更改QUERY_STRING改变位置信息:&lt;/p&gt;&lt;div class="wp_syntax"&gt;&lt;table border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="line_numbers"&gt;&amp;nbsp;&lt;/td&gt;&lt;td class="code"&gt;&lt;span&gt;NSString&lt;/span&gt;&lt;span&gt;*&lt;/span&gt; searchQuery &lt;span&gt;=&lt;/span&gt; &lt;span&gt;@&lt;/span&gt;&lt;span&gt;"the postion I want to know&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;;searchQuery &lt;span&gt;=&lt;/span&gt;  &lt;span&gt;[searchQuery stringByAddingPercentEscapesUsingEncoding&lt;span&gt;:&lt;/span&gt; NSUTF8StringEncoding&lt;span&gt;]&lt;/span&gt;;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;NSString&lt;/span&gt;&lt;span&gt;*&lt;/span&gt; urlString &lt;span&gt;=&lt;/span&gt; &lt;span&gt;[&lt;/span&gt;&lt;span&gt;NSString&lt;/span&gt; stringWithFormat&lt;span&gt;:&lt;/span&gt;&lt;span&gt;@&lt;/span&gt;&lt;span&gt;"http://maps.google.com/maps?q=%@"&lt;/span&gt;, searchQuery&lt;span&gt;]&lt;/span&gt;;&lt;br/&gt;&amp;nbsp;&lt;br/&gt;&lt;br/&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;UIApplication sharedApplication&lt;span&gt;]&lt;/span&gt; openURL&lt;span&gt;:&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;NSURL&lt;/span&gt; URLWithString&lt;span&gt;: urlString&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;打开Apple Mail&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;格式：&lt;/p&gt;&lt;p&gt;&lt;code&gt;mailto://&lt;strong&gt;${EMAIL_ADDRESS}&lt;/strong&gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;UIApplication sharedApplication&lt;span&gt;]&lt;/span&gt; openURL&lt;span&gt;:&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;NSURL&lt;/span&gt; URLWithString&lt;span&gt;:&lt;/span&gt;&lt;span&gt;@&lt;/span&gt;&lt;span&gt;"mailto://info@iphonedevelopertips.com"&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;拨打电话（iPhone Only)&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;格式：&lt;/p&gt;&lt;p&gt;&lt;code&gt;tel://&lt;strong&gt;${PHONE_NUMBER}&lt;/strong&gt;&lt;/code&gt;&lt;/p&gt;&lt;div class="wp_syntax"&gt;&lt;table border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="line_numbers"&gt;1&lt;br/&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;UIApplication sharedApplication&lt;span&gt;]&lt;/span&gt; openURL&lt;span&gt;:&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;NSURL&lt;/span&gt; URLWithString&lt;span&gt;:&lt;/span&gt;&lt;span&gt;@&lt;/span&gt;&lt;span&gt;"tel://8004664411"&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;发短信&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;格式&lt;/p&gt;&lt;p&gt;&lt;code&gt;sms:&lt;strong&gt;${PHONENUMBER_OR_SHORTCODE}&lt;/strong&gt;&lt;/code&gt;&lt;/p&gt;&lt;div class="wp_syntax"&gt;&lt;table border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="line_numbers"&gt;1&lt;br/&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;UIApplication sharedApplication&lt;span&gt;]&lt;/span&gt; openURL&lt;span&gt;:&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;NSURL&lt;/span&gt; URLWithString&lt;span&gt;:&lt;/span&gt;&lt;span&gt;@&lt;/span&gt;&lt;span&gt;"sms:55555"&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;打开app store&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;打开appstore的程序位置，右键点击程序图标获取url&lt;/p&gt;&lt;p&gt;格式如下：&lt;/p&gt;&lt;p&gt;&lt;code&gt;http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=291586600&amp;amp;mt=8&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="wp_syntax"&gt;&lt;table border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="line_numbers"&gt;1&lt;br/&gt;2&lt;br/&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;span&gt;NSURL&lt;/span&gt; &lt;span&gt;*&lt;/span&gt;appStoreUrl &lt;span&gt;=&lt;/span&gt; &lt;span&gt;[&lt;/span&gt;&lt;span&gt;NSURL&lt;/span&gt; URLWithString&lt;span&gt;:&lt;/span&gt;&lt;span&gt;@&lt;/span&gt;&lt;span&gt;"http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=291586600&amp;amp;amp;mt=8"&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;;&lt;br/&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;UIApplication sharedApplication&lt;span&gt;]&lt;/span&gt; openURL&lt;span&gt;:&lt;/span&gt;appStoreUrl&lt;span&gt;]&lt;/span&gt;;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="article_title"&gt;&lt;p&gt;&lt;strong&gt;&lt;span class="link_title"&gt;&lt;a href="http://blog.csdn.net/linkai5696/article/details/6136316"&gt;iphone程序启动互相调用&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="article_manage"&gt;&amp;nbsp;&lt;/div&gt;&lt;div id="article_content" class="article_content"&gt;&lt;p&gt;如何点击一个程序调用起来另一个程序的方法&lt;br /&gt;调用程序A&amp;nbsp;&amp;nbsp;被调用程序 B&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;A中要设置一些调用的信息&lt;/p&gt;&lt;p&gt;- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;[self performSelector:@selector(launchMe) withObject:nil afterDelay:0.0];&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [window makeKeyAndVisible];&lt;br /&gt;&amp;nbsp;return YES;&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;&lt;br /&gt;- (void)launchMe&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"abc://"]];&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;************&lt;br /&gt;其中abc是被调用程序B的bundle id 如: com.yourcompany.abc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 后面的://是必定要加的格式&lt;/p&gt;&lt;p&gt;&lt;br /&gt;B中要修改plist文件的配置信息&lt;br /&gt;&amp;lt;key&amp;gt;CFBundleURLTypes&amp;lt;/key&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;array&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;dict&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;key&amp;gt;CFBundleURLName&amp;lt;/key&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;string&amp;gt;com.yourcompany.abc&amp;lt;/string&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;key&amp;gt;CFBundleURLSchemes&amp;lt;/key&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;array&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;string&amp;gt;abc&amp;lt;/string&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/array&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/dict&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/array&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;如图所示&amp;nbsp; info配置截图&lt;/p&gt;&lt;p&gt;&lt;img src="http://hi.csdn.net/attachment/201101/13/0_1294923851le5X.gif" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="center"&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Georgia;"&gt;&lt;span&gt;&lt;strong&gt;检测iphone是否安装有某个程序,或者打开某个程序openURL CanOpenURL&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="center"&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Georgia;"&gt;&lt;span&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="color: #555555;"&gt;&lt;span style="font-family: Georgia;"&gt;&lt;span&gt;[问题描述]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #555555;"&gt;&lt;span style="font-family: Georgia;"&gt;&lt;span&gt;1:在程序B中检测手机中是否安装A程序.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #555555;"&gt;&lt;span style="font-family: Georgia;"&gt;&lt;span&gt;2:在程序B中打开应用程序A.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #555555;"&gt;&lt;span style="font-family: Georgia;"&gt;&lt;span&gt;[解决办法]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #555555;"&gt;&lt;span style="font-family: Georgia;"&gt;&lt;span&gt;步骤一:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #555555;"&gt;&lt;span style="font-family: Georgia;"&gt;&lt;span&gt;首先在程序A的plist中添加url types&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #555555;"&gt;&lt;span style="font-family: Georgia;"&gt;&lt;span&gt;&amp;lt;key&amp;gt;CFBundleURLTypes&amp;lt;/key&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #555555;"&gt;&lt;span style="font-family: Georgia;"&gt;&lt;span&gt;&amp;lt;array&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #555555;"&gt;&lt;span style="font-family: Georgia;"&gt;&lt;span&gt;&amp;lt;dict&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #555555;"&gt;&lt;span style="font-family: Georgia;"&gt;&lt;span&gt;&amp;lt;key&amp;gt;CFBundleURLName&amp;lt;/key&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #555555;"&gt;&lt;span style="font-family: Georgia;"&gt;&lt;span&gt;&amp;lt;string&amp;gt;AAAAA&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #555555;"&gt;&lt;span style="font-family: Georgia;"&gt;&lt;span&gt;&amp;lt;key&amp;gt;CFBundleURLSchemes&amp;lt;/key&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #555555;"&gt;&lt;span style="font-family: Georgia;"&gt;&lt;span&gt;&amp;lt;array&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #555555;"&gt;&lt;span style="font-family: Georgia;"&gt;&lt;span&gt;&amp;lt;string&amp;gt;testA&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #555555;"&gt;&lt;span style="font-family: Georgia;"&gt;&lt;span&gt;&amp;lt;/array&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #555555;"&gt;&lt;span style="font-family: Georgia;"&gt;&lt;span&gt;&amp;lt;/dict&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #555555;"&gt;&lt;span style="font-family: Georgia;"&gt;&lt;span&gt;&amp;lt;/array&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #555555;"&gt;&lt;span style="font-family: Georgia;"&gt;&lt;span&gt;步骤二:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #555555;"&gt;&lt;span style="font-family: Georgia;"&gt;&lt;span&gt;在程序B中调用A程序的地方添加代码&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #555555; font-family: Georgia;"&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;NSURL * myURL_APP_A = [NSURL URLWithString:@"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span&gt;testA&lt;/span&gt;&lt;span&gt;://&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span&gt;AAAAA&lt;/span&gt;&lt;/strong&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;"];&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;if ([[UIApplication sharedApplication]&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span&gt;canOpenURL&lt;/span&gt;&lt;/strong&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;:myURL_APP_A]) {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;NSLog(@"canOpenURL");&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;[[UIApplication sharedApplication]&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span&gt;openURL&lt;/span&gt;&lt;/strong&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;:myURL_APP_A];&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;在iPhone中，可以直接用UIApp打开URL地址。如下所示：&lt;/p&gt;&lt;p&gt;[ UIApp openURL: [ NSURL URLWithString:@"http://www.apple.com" ] ];&lt;br /&gt;或者：&lt;/p&gt;&lt;p&gt;[ UIApp openURL: [ NSURL URLWithString:@"mailto:apple@mac.com?Subject=hello" ] ];&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;与此同时，iPhone还包含一些其他除了http://或者mailto:之外的URL：&lt;/p&gt;&lt;p&gt;sms:// 可以调用短信程序&lt;/p&gt;&lt;p&gt;tel:// 可以拨打电话&lt;/p&gt;&lt;p&gt;itms:// 可以打开MobileStore.app&lt;/p&gt;&lt;p&gt;audio-player-event:// 可以打开iPod&lt;/p&gt;&lt;p&gt;audio-player-event://?uicmd=show-purchased-playlist 可以打开iPod播放列表&lt;/p&gt;&lt;p&gt;video-player-event:// 可以打开iPod中的视频&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/chen1987lei/aggbug/2453834.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/chen1987lei/archive/2012/04/17/2453834.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/chen1987lei/archive/2012/04/08/2437869.html</id><title type="text">iphone聊天用几种图形（表情）与文字混排的实现与比较 [复制链接]</title><summary type="text">一、用HTML实现文字表情混合排列用HTML实现图形文字混排的好处就是你不需要考虑表情在文字里面的位置问题，你只需要自己做一个HTML，然后用UIWEBVIEW加载一下，然后再把WENVIEW放到视图上，颜色字体什么都是可以调节的，但是从内存考虑，聊天一般都用UITableView做最下层的容易，因为内存容易管理，（表会自动释放），如果是用UISCrollView加载的话，则内存会逐条增加，DEMO阶段可以试试。如果用表的话，因为UIWebView加载HTML会有延迟，无论是本地还是网络，所以在CELL里面放UIWebView刷新表的时候会有闪烁的效果。所以个人觉得HTML来实现的话只适合DE</summary><published>2012-04-08T11:09:00Z</published><updated>2012-04-08T11:09:00Z</updated><author><name>BradyChen</name><uri>http://www.cnblogs.com/chen1987lei/</uri></author><link rel="alternate" href="http://www.cnblogs.com/chen1987lei/archive/2012/04/08/2437869.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chen1987lei/archive/2012/04/08/2437869.html"/><content type="html">&lt;p&gt;一、用HTML实现文字表情混合排列&lt;br /&gt;用HTML实现图形文字混排的好处就是你不需要考虑表情在文字里面的位置问题，你只需要自己做一个HTML，然后用UIWEBVIEW加载一下，然后再把WENVIEW放到视图上，颜色字体什么都是可以调节的，但是从内存考虑，聊天一般都用UITableView做最下层的容易，因为内存容易管理，（表会自动释放），如果是用UISCrollView加载的话，则内存会逐条增加，DEMO阶段可以试试。如果用表的话，因为UIWebView加载HTML会有延迟，无论是本地还是网络，所以在CELL里面放UIWebView刷新表的时候会有闪烁的效果。所以个人觉得HTML来实现的话只适合DEMO阶段的糊弄下人，因为UIWebView也是很占资源。（这里我写了个HTML实现的例子，粗糙表达下意思，用得表我没有用UISCrollView，用UISCrollView要不停设置contentSize）；&lt;br /&gt;封装HTML的代码：&lt;/p&gt;&lt;p&gt;[NSString stringWithFormat:@"&amp;lt;body style=background-color: transparent&amp;gt;&amp;lt;div style=width:%dpx;word-break:break-all&amp;gt;&amp;lt;style&amp;gt;a{text-decoration:none;color:00000}&amp;lt;/style&amp;gt;%@ &amp;lt;/div&amp;gt;&amp;lt;/body&amp;gt;",m_pNewLine,string];&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;类似这样，但是这个要做循环把所有的表情给转换成图片名。麻烦。&lt;br /&gt;&lt;a href="http://dl.dbank.com/c0xpfcvxk3" target="_blank"&gt;http://dl.dbank.com/c0xpfcvxk3&lt;/a&gt;&lt;br /&gt;二、用UILabel+UIImageView实现图文混排&lt;br /&gt;&amp;nbsp;&amp;nbsp; 在我看来用这个方法谈不上什么好处，但是网上也早流传这个猥琐方法的传说，这个方法实现的基本思想就是对要发送出去的内容做判断，以表情来做分割，是纯文字的就用UIlabel来存放，表情就用UIImageView来进行存放，只要算好他们他们的互相位置就可以，最终把他们放到一个UIView上，然后再加到你要显示的地方，但是这个判断还是比较繁琐的，这个方法我觉得没什么亮点，但是内存消耗还是比上面的HTML要小，这个倒是真得。切加到表里面也不会有闪烁。（这里我也写了一个例子，粗糙的将就看看吧。）&lt;br /&gt;这里放一个iphone 实时获取键盘高度的方法；注册二个键盘出来跟退下去的通知。我建议是放在开始编辑和结束编辑里面注册和remove，这样不会跟其他同类通知冲突。（这里是取的横屏的时候键盘的高度，所以是取的是宽，）&lt;/p&gt;&lt;p&gt;-(void)adjustkeyboardShowView:(NSNotification *)nofi&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NSDictionary *info = [nofi userInfo];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NSValue * value ;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; value = [info objectForKey:UIKeyboardFrameEndUserInfoKey];&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CGSize keyboardEndFrame = [value CGRectValue].size;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int keyheight = keyboardEndFrame.width;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(keyheight == 352){&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if(keyheight ==406) {&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;&lt;p&gt;&lt;a href="http://dl.dbank.com/c0g0nhmja6" target="_blank"&gt;http://dl.dbank.com/c0g0nhmja6&lt;/a&gt;&lt;br /&gt;三、用drawRect实现图形文字的混排&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; drawRect方法的好处就是内存什么都可以更改，字体的颜色也是可以灵活设置的，而且内存损耗比较小。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; drawRect实现的基本思想是，首先你给定的最大换行宽度是多少，然后以这个宽度来分割你输入的字符，将你分割的字符分别放入一个数组里面，当然不是随便的放得，取字符的时候要判断结尾跟开头的空格，因为在IPHONE里面结尾空格是会自动换行的，同时要判断结尾是否有表情，加上表情的话宽度是否超过最大的宽度，判断每一段字符的里面表情的位置和图片名 也需要保存起来，最后绘制文字和图片的时候分别用[string drawInRect:CGRectMake(x, y, Width, Heigh) withFont:Font]; [image drawAtPoint:CGPointMake(x,x)];&lt;br /&gt;当然如果你做得一套大小合适的图片这样就足够了，但是如果你的工程需要适应多种字体和表情大小，drawAtPoint 不能缩小图片，所以我这里写得还是一个适合多字体多种大小的小例子，（这里仍然得放一个粗糙的小例子，）代码你们懂的。&lt;br /&gt;&lt;a href="http://dl.dbank.com/c0iaxk6gj8" target="_blank"&gt;http://dl.dbank.com/c0iaxk6gj8&lt;/a&gt;&lt;br /&gt;四、three20库实现图形文字的混排，&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; three20库的实现比较简单了，three20自己写了一个TTLABEL，功能类似于UIWebView,也是加载类似于HTML，但是对内存控制的非常牛X，这个我也写过例子，但是没弄回来。以后有机会补上吧，不过个人觉得简单，FACEBOOK的开源库直接装了就可以用&lt;/p&gt;&lt;img src="http://www.cnblogs.com/chen1987lei/aggbug/2437869.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/chen1987lei/archive/2012/04/08/2437869.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/chen1987lei/archive/2012/03/14/2396035.html</id><title type="text">【转】Xcode分析CrashLog的方法</title><summary type="text">使用dwarfdump检查dSYM和app是否匹配搞iPhone开发就要不停地发版本，随之而来的就是各种版本的crash log。如果不能好好地管理，那么开发人员很快就会在crash log和版本的海洋里迷失方向。MAC上有个免费的小工具——dwarfdump，可以简便地检测出app和相应的dSYM。使用起来很简单。分三步即可。1&gt; 根据crash log，得到App的UUID。UUID是个字符串，由32个字符组成。得到了UUID，你才能知道是你的哪个版本在用户的iPhone上出了问题。2&gt; 使用dwarfdump检查app，看哪个app是上面那个UUID。命令行格式：dwarfd</summary><published>2012-03-14T07:40:00Z</published><updated>2012-03-14T07:40:00Z</updated><author><name>BradyChen</name><uri>http://www.cnblogs.com/chen1987lei/</uri></author><link rel="alternate" href="http://www.cnblogs.com/chen1987lei/archive/2012/03/14/2396035.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chen1987lei/archive/2012/03/14/2396035.html"/><content type="html">&lt;div class="postTitle"&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="tit"&gt;使用dwarfdump检查dSYM和app是否匹配&lt;/div&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div id="blog_text" class="cnt"&gt;搞iPhone开发就要不停地发版本，随之而来的就是各种版本的crash log。如果不能好好地管理，那么开发人员很快就会在crash log和版本的海洋里迷失方向。&lt;br /&gt;MAC上有个免费的小工具&amp;mdash;&amp;mdash;dwarfdump，可以简便地检测出app和相应的dSYM。&lt;br /&gt;&lt;br /&gt;使用起来很简单。分三步即可。&lt;br /&gt;1&amp;gt; 根据crash log，得到App的UUID。UUID是个字符串，由32个字符组成。得到了UUID，你才能知道是你的哪个版本在用户的iPhone上出了问题。&lt;br /&gt;&lt;br /&gt;2&amp;gt; 使用dwarfdump检查app，看哪个app是上面那个UUID。命令行格式：&lt;br /&gt;dwarfdump --uuid YourApp.app/YourApp&lt;br /&gt;&lt;br /&gt;3&amp;gt; 用dwarfdump检查dSYM文件是否是上面的UUID。命令行格式：&lt;br /&gt;dwarfdump --uuid YourApp.app.dSYM&lt;br /&gt;&lt;br /&gt;如果三者的UUID都是一致的，那么恭喜你，该crash log可以被正确解析出来，stack traces信息可以被正确地拿到。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="entry-content"&gt;&lt;p&gt;原文地址：&lt;a href="http://www.acwind.net/blog/?p=1090"&gt;http://www.acwind.net/blog/?p=1090&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Bug是永远伴随着程序员们的东西，各种各样的情况造成程序crash掉也是家常便饭。Windows下的很多大型软件在崩溃的时候，都会弹出提示框，询问用户是否将crash的信息发送到软件厂商，以供软件开发商debug。App store中的软件也有这个功能，用户在使用软件的时候，如果程序崩溃，错误信息会发送到Apple的服务器中，软件的开发者们可以很方便在后台获得自己程序的crash log，供自己调试。&lt;/p&gt;&lt;p&gt;但随之而来的问题是，我们收到的程序崩溃调试信息多半是汇编语言一样的堆栈代码，同时这些信息并不是在我们debug的时候产生，所以看到这一串crash log的天书，常常无可奈何。Xcode很好的解决了这一问题，它所提供的Orgainzer分析器加上symbolicatecrash，可以分析二进制文件以及源代码和crashlog之间的连接，直接找出源程序中出错的代码行。方法网上到处是，本文不讨论。&lt;/p&gt;&lt;p&gt;但是如果使用symbolicatecrash无法定位到出错的代码行的话，怎么整呢？有一个办法，如下：&lt;/p&gt;&lt;p&gt;首先查看crash log中的崩溃线程，假如是这样的：&lt;/p&gt;&lt;p&gt;Thread 0 Crashed:&lt;br /&gt;0 &amp;nbsp; libobjc.A.dylib &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;0x00003ec0 objc_msgSend + 24&lt;br /&gt;1 &amp;nbsp; MyApp &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;0x000036d2 0&amp;times;1000 + 9938&lt;/p&gt;&lt;p&gt;我们得到了用户发生崩溃情况的内存地址：0x000036d2&lt;/p&gt;&lt;p&gt;然后回到我们应用程序的build目录，目录下一定要包含MyApp.app 和MyApp.app.dSYM两个文件。&lt;/p&gt;&lt;p&gt;在控制台使用dwarfdump命令，解析出内存地址，如：&amp;nbsp;&lt;/p&gt;&lt;p&gt;dwarfdump &amp;ndash;lookup 0x000036d2 &amp;ndash;arch armv6 MyApp.app.dSYM&lt;/p&gt;&lt;p&gt;输出信息如下：&lt;/p&gt;&lt;p&gt;&lt;img title="dwarfdump.jpg" src="http://www.acwind.net/blog/wp-content/uploads/2010/06/dwarfdump.jpg" alt="dwarfdump.jpg" width="534" height="149" border="0" /&gt;&lt;/p&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/chen1987lei/aggbug/2396035.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/chen1987lei/archive/2012/03/14/2396035.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/chen1987lei/archive/2012/02/07/2341535.html</id><title type="text">调用系统提示音教程出处：Webcool</title><summary type="text">论坛会员zhaoxy2850分享的关于调用系统提示音的教程，写的很详细目前做的一个项目里用到了提示音，但是又不想添加提示音到库里，便开始研究调用系统自带的提示音，最后终于找到了。开始在CC上查发现好像很多人都在问，但没人回答，我就把自己查到的东西和写的一个demo给大家分享下吧～首先要在工程里加入Audio Toolbox framework这个库，然后在需要调用的文件里#import &lt;AudioToolbox/AudioToolbox.h&gt;最后在需要播放提示音的地方写上AudioServicesPlaySystemSound(1106);注：括号中为系统声音的id，详见最下面的</summary><published>2012-02-07T07:25:00Z</published><updated>2012-02-07T07:25:00Z</updated><author><name>BradyChen</name><uri>http://www.cnblogs.com/chen1987lei/</uri></author><link rel="alternate" href="http://www.cnblogs.com/chen1987lei/archive/2012/02/07/2341535.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chen1987lei/archive/2012/02/07/2341535.html"/><content type="html">&lt;p&gt;论坛会员&lt;a href="http://www.cocoachina.com/bbs/u.php?action=show&amp;amp;uid=32359"&gt;zhaoxy2850&lt;/a&gt;分享的关于调用系统提示音的教程，写的很详细&lt;/p&gt;&lt;p&gt;目前做的一个项目里用到了提示音，但是又不想添加提示音到库里，便开始研究调用系统自带的提示音，最后终于找到了。&lt;/p&gt;&lt;p&gt;开始在CC上查发现好像很多人都在问，但没人回答，我就把自己查到的东西和写的一个demo给大家分享下吧～&lt;/p&gt;&lt;div&gt;&lt;img src="http://cc.cocimg.com/cms/uploads/allimg/111009/3292_111009105046_1.png" alt="" width="359" height="710" border="0" /&gt;&lt;/div&gt;&lt;p&gt;首先要在工程里加入Audio Toolbox framework这个库，然后在需要调用的文件里#import &amp;lt;AudioToolbox/AudioToolbox.h&amp;gt;&lt;/p&gt;&lt;p&gt;最后在需要播放提示音的地方写上&lt;br /&gt;AudioServicesPlaySystemSound(1106);&amp;nbsp;&lt;br /&gt;注：括号中为系统声音的id，详见最下面的列表。&lt;/p&gt;&lt;p&gt;为了方便大家测试系统声音，我写了一个demo供大家使用下载。&lt;/p&gt;&lt;p&gt;另外，如果想用自己的音频文件创建系统声音来播放的同学可以参考如下代码。&lt;/p&gt;&lt;p&gt;//Get the filename of the sound file:&lt;br /&gt;NSString *path = [NSString stringWithFormat:@"%@%@", [[NSBundle mainBundle] resourcePath], @"/jad0007a.wav"];&lt;/p&gt;&lt;p&gt;//declare a system sound&lt;br /&gt;id SystemSoundID soundID;&lt;/p&gt;&lt;p&gt;//Get a URL for the sound file&lt;br /&gt;NSURL *filePath = [NSURL fileURLWithPath:path isDirectory:NO];&lt;/p&gt;&lt;p&gt;//Use audio sevices to create the sound&lt;br /&gt;AudioServicesCreateSystemSoundID((CFURLRef)filePath, &amp;amp;soundID);&lt;br /&gt;//Use audio services to play the sound&lt;br /&gt;AudioServicesPlaySystemSound(soundID);&lt;/p&gt;&lt;p&gt;&lt;br /&gt;顺便附上系统提示音对应的列表&lt;br /&gt;&lt;a href="http://iphonedevwiki.net/index.php/AudioServices"&gt;http://iphonedevwiki.net/index.php/AudioServices&lt;/a&gt;&lt;/p&gt;&lt;p&gt;希望能对大家有帮助吧～&amp;nbsp;&lt;/p&gt;&lt;p&gt;源码下载：&lt;img src="http://cc.cocimg.com/cms/uploads/allimg/111009/1052195250-0.gif" alt="" align="absmiddle" /&gt;&amp;nbsp;&lt;a href="http://www.cocoachina.com/bbs/job.php?action=download&amp;amp;aid=30581" target="_blank"&gt;&lt;span style="color: red;"&gt;SystemSound.zip&lt;/span&gt;&amp;nbsp;(25 K)&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong class="selflink"&gt;AudioServices&lt;/strong&gt;&amp;nbsp;is a group of C functions in&amp;nbsp;&lt;a title="AudioToolbox.framework" href="http://iphonedevwiki.net/index.php/AudioToolbox.framework"&gt;AudioToolbox&lt;/a&gt;&amp;nbsp;for playing short (&amp;le;30 seconds) sounds.&lt;/p&gt;&lt;p&gt;&lt;a id="Predefined_sounds" name="Predefined_sounds"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span class="mw-headline"&gt;Predefined sounds&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;There are some predefined system sounds, for the system sound ID in the range 1000 to 2000 (decimal), as shown below (from 2.0 to 5.0 beta). The system sounds are all stored in&lt;tt&gt;/System/Library/Audio/UISounds/&lt;/tt&gt;.&lt;/p&gt;&lt;table id="sortable_table_id_0" class="wikitable sortable"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Sound ID &amp;nbsp;&amp;nbsp;&lt;a class="sortheader" href="http://iphonedevwiki.net/index.php/AudioServices"&gt;&lt;span class="sortarrow"&gt;&lt;img src="http://iphonedevwiki.net/skins/common/images/sort_none.gif" alt="&amp;darr;" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/th&gt;&lt;th&gt;File name (iPhone) &amp;nbsp;&amp;nbsp;&lt;a class="sortheader" href="http://iphonedevwiki.net/index.php/AudioServices"&gt;&lt;span class="sortarrow"&gt;&lt;img src="http://iphonedevwiki.net/skins/common/images/sort_none.gif" alt="&amp;darr;" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/th&gt;&lt;th&gt;File name (iPod Touch) &amp;nbsp;&amp;nbsp;&lt;a class="sortheader" href="http://iphonedevwiki.net/index.php/AudioServices"&gt;&lt;span class="sortarrow"&gt;&lt;img src="http://iphonedevwiki.net/skins/common/images/sort_none.gif" alt="&amp;darr;" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/th&gt;&lt;th&gt;Category &amp;nbsp;&amp;nbsp;&lt;a class="sortheader" href="http://iphonedevwiki.net/index.php/AudioServices"&gt;&lt;span class="sortarrow"&gt;&lt;img src="http://iphonedevwiki.net/skins/common/images/sort_none.gif" alt="&amp;darr;" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/th&gt;&lt;th&gt;Note &amp;nbsp;&amp;nbsp;&lt;a class="sortheader" href="http://iphonedevwiki.net/index.php/AudioServices"&gt;&lt;span class="sortarrow"&gt;&lt;img src="http://iphonedevwiki.net/skins/common/images/sort_none.gif" alt="&amp;darr;" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1000&lt;/td&gt;&lt;td&gt;new-mail.caf&lt;/td&gt;&lt;td&gt;new-mail.caf&lt;/td&gt;&lt;td&gt;MailReceived&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1001&lt;/td&gt;&lt;td&gt;mail-sent.caf&lt;/td&gt;&lt;td&gt;mail-sent.caf&lt;/td&gt;&lt;td&gt;MailSent&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1002&lt;/td&gt;&lt;td&gt;Voicemail.caf&lt;/td&gt;&lt;td&gt;Voicemail.caf&lt;/td&gt;&lt;td&gt;VoicemailReceived&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1003&lt;/td&gt;&lt;td&gt;ReceivedMessage.caf&lt;/td&gt;&lt;td&gt;ReceivedMessage.caf&lt;/td&gt;&lt;td&gt;SMSReceived&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1004&lt;/td&gt;&lt;td&gt;SentMessage.caf&lt;/td&gt;&lt;td&gt;SentMessage.caf&lt;/td&gt;&lt;td&gt;SMSSent&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1005&lt;/td&gt;&lt;td&gt;alarm.caf&lt;/td&gt;&lt;td&gt;sq_alarm.caf&lt;/td&gt;&lt;td&gt;CalendarAlert&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1006&lt;/td&gt;&lt;td&gt;low_power.caf&lt;/td&gt;&lt;td&gt;low_power.caf&lt;/td&gt;&lt;td&gt;LowPower&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1007&lt;/td&gt;&lt;td&gt;sms-received1.caf&lt;/td&gt;&lt;td&gt;sms-received1.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Alert&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1008&lt;/td&gt;&lt;td&gt;sms-received2.caf&lt;/td&gt;&lt;td&gt;sms-received2.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Alert&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1009&lt;/td&gt;&lt;td&gt;sms-received3.caf&lt;/td&gt;&lt;td&gt;sms-received3.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Alert&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1010&lt;/td&gt;&lt;td&gt;sms-received4.caf&lt;/td&gt;&lt;td&gt;sms-received4.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Alert&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1011&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;td&gt;SMSReceived_Vibrate&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1012&lt;/td&gt;&lt;td&gt;sms-received1.caf&lt;/td&gt;&lt;td&gt;sms-received1.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Alert&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1013&lt;/td&gt;&lt;td&gt;sms-received5.caf&lt;/td&gt;&lt;td&gt;sms-received5.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Alert&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1014&lt;/td&gt;&lt;td&gt;sms-received6.caf&lt;/td&gt;&lt;td&gt;sms-received6.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Alert&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1015&lt;/td&gt;&lt;td&gt;Voicemail.caf&lt;/td&gt;&lt;td&gt;Voicemail.caf&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;td&gt;Available since 2.1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1016&lt;/td&gt;&lt;td&gt;tweet_sent.caf&lt;/td&gt;&lt;td&gt;tweet_sent.caf&lt;/td&gt;&lt;td&gt;SMSSent&lt;/td&gt;&lt;td&gt;Available since 5.0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1020&lt;/td&gt;&lt;td&gt;Anticipate.caf&lt;/td&gt;&lt;td&gt;Anticipate.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Alert&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1021&lt;/td&gt;&lt;td&gt;Bloom.caf&lt;/td&gt;&lt;td&gt;Bloom.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Alert&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1022&lt;/td&gt;&lt;td&gt;Calypso.caf&lt;/td&gt;&lt;td&gt;Calypso.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Alert&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1023&lt;/td&gt;&lt;td&gt;Choo_Choo.caf&lt;/td&gt;&lt;td&gt;Choo_Choo.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Alert&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1024&lt;/td&gt;&lt;td&gt;Descent.caf&lt;/td&gt;&lt;td&gt;Descent.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Alert&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1025&lt;/td&gt;&lt;td&gt;Fanfare.caf&lt;/td&gt;&lt;td&gt;Fanfare.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Alert&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1026&lt;/td&gt;&lt;td&gt;Ladder.caf&lt;/td&gt;&lt;td&gt;Ladder.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Alert&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1027&lt;/td&gt;&lt;td&gt;Minuet.caf&lt;/td&gt;&lt;td&gt;Minuet.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Alert&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1028&lt;/td&gt;&lt;td&gt;News_Flash.caf&lt;/td&gt;&lt;td&gt;News_Flash.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Alert&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1029&lt;/td&gt;&lt;td&gt;Noir.caf&lt;/td&gt;&lt;td&gt;Noir.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Alert&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1030&lt;/td&gt;&lt;td&gt;Sherwood_Forest.caf&lt;/td&gt;&lt;td&gt;Sherwood_Forest.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Alert&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1031&lt;/td&gt;&lt;td&gt;Spell.caf&lt;/td&gt;&lt;td&gt;Spell.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Alert&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1032&lt;/td&gt;&lt;td&gt;Suspense.caf&lt;/td&gt;&lt;td&gt;Suspense.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Alert&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1033&lt;/td&gt;&lt;td&gt;Telegraph.caf&lt;/td&gt;&lt;td&gt;Telegraph.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Alert&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1034&lt;/td&gt;&lt;td&gt;Tiptoes.caf&lt;/td&gt;&lt;td&gt;Tiptoes.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Alert&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1035&lt;/td&gt;&lt;td&gt;Typewriters.caf&lt;/td&gt;&lt;td&gt;Typewriters.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Alert&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1036&lt;/td&gt;&lt;td&gt;Update.caf&lt;/td&gt;&lt;td&gt;Update.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Alert&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1050&lt;/td&gt;&lt;td&gt;ussd.caf&lt;/td&gt;&lt;td&gt;ussd.caf&lt;/td&gt;&lt;td&gt;USSDAlert&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1051&lt;/td&gt;&lt;td&gt;SIMToolkitCallDropped.caf&lt;/td&gt;&lt;td&gt;SIMToolkitCallDropped.caf&lt;/td&gt;&lt;td&gt;SIMToolkitTone&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1052&lt;/td&gt;&lt;td&gt;SIMToolkitGeneralBeep.caf&lt;/td&gt;&lt;td&gt;SIMToolkitGeneralBeep.caf&lt;/td&gt;&lt;td&gt;SIMToolkitTone&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1053&lt;/td&gt;&lt;td&gt;SIMToolkitNegativeACK.caf&lt;/td&gt;&lt;td&gt;SIMToolkitNegativeACK.caf&lt;/td&gt;&lt;td&gt;SIMToolkitTone&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1054&lt;/td&gt;&lt;td&gt;SIMToolkitPositiveACK.caf&lt;/td&gt;&lt;td&gt;SIMToolkitPositiveACK.caf&lt;/td&gt;&lt;td&gt;SIMToolkitTone&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1055&lt;/td&gt;&lt;td&gt;SIMToolkitSMS.caf&lt;/td&gt;&lt;td&gt;SIMToolkitSMS.caf&lt;/td&gt;&lt;td&gt;SIMToolkitTone&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1057&lt;/td&gt;&lt;td&gt;Tink.caf&lt;/td&gt;&lt;td&gt;Tink.caf&lt;/td&gt;&lt;td&gt;PINKeyPressed&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1070&lt;/td&gt;&lt;td&gt;ct-busy.caf&lt;/td&gt;&lt;td&gt;ct-busy.caf&lt;/td&gt;&lt;td&gt;AudioToneBusy&lt;/td&gt;&lt;td&gt;There was no category for this sound before 4.0.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1071&lt;/td&gt;&lt;td&gt;ct-congestion.caf&lt;/td&gt;&lt;td&gt;ct-congestion.caf&lt;/td&gt;&lt;td&gt;AudioToneCongestion&lt;/td&gt;&lt;td&gt;There was no category for this sound before 4.0.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1072&lt;/td&gt;&lt;td&gt;ct-path-ack.caf&lt;/td&gt;&lt;td&gt;ct-path-ack.caf&lt;/td&gt;&lt;td&gt;AudioTonePathAcknowledge&lt;/td&gt;&lt;td&gt;There was no category for this sound before 4.0.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1073&lt;/td&gt;&lt;td&gt;ct-error.caf&lt;/td&gt;&lt;td&gt;ct-error.caf&lt;/td&gt;&lt;td&gt;AudioToneError&lt;/td&gt;&lt;td&gt;There was no category for this sound before 4.0.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1074&lt;/td&gt;&lt;td&gt;ct-call-waiting.caf&lt;/td&gt;&lt;td&gt;ct-call-waiting.caf&lt;/td&gt;&lt;td&gt;AudioToneCallWaiting&lt;/td&gt;&lt;td&gt;There was no category for this sound before 4.0.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1075&lt;/td&gt;&lt;td&gt;ct-keytone2.caf&lt;/td&gt;&lt;td&gt;ct-keytone2.caf&lt;/td&gt;&lt;td&gt;AudioToneKey2&lt;/td&gt;&lt;td&gt;There was no category for this sound before 4.0.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1100&lt;/td&gt;&lt;td&gt;lock.caf&lt;/td&gt;&lt;td&gt;sq_lock.caf&lt;/td&gt;&lt;td&gt;ScreenLocked&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1101&lt;/td&gt;&lt;td&gt;unlock.caf&lt;/td&gt;&lt;td&gt;sq_lock.caf&lt;/td&gt;&lt;td&gt;ScreenUnlocked&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1102&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;td&gt;FailedUnlock&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1103&lt;/td&gt;&lt;td&gt;Tink.caf&lt;/td&gt;&lt;td&gt;sq_tock.caf&lt;/td&gt;&lt;td&gt;KeyPressed&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1104&lt;/td&gt;&lt;td&gt;Tock.caf&lt;/td&gt;&lt;td&gt;sq_tock.caf&lt;/td&gt;&lt;td&gt;KeyPressed&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1105&lt;/td&gt;&lt;td&gt;Tock.caf&lt;/td&gt;&lt;td&gt;sq_tock.caf&lt;/td&gt;&lt;td&gt;KeyPressed&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1106&lt;/td&gt;&lt;td&gt;beep-beep.caf&lt;/td&gt;&lt;td&gt;sq_beep-beep.caf&lt;/td&gt;&lt;td&gt;ConnectedToPower&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1107&lt;/td&gt;&lt;td&gt;RingerChanged.caf&lt;/td&gt;&lt;td&gt;RingerChanged.caf&lt;/td&gt;&lt;td&gt;RingerSwitchIndication&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1108&lt;/td&gt;&lt;td&gt;photoShutter.caf&lt;/td&gt;&lt;td&gt;photoShutter.caf&lt;/td&gt;&lt;td&gt;CameraShutter&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1109&lt;/td&gt;&lt;td&gt;shake.caf&lt;/td&gt;&lt;td&gt;shake.caf&lt;/td&gt;&lt;td&gt;ShakeToShuffle&lt;/td&gt;&lt;td&gt;Available since 3.0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1110&lt;/td&gt;&lt;td&gt;jbl_begin.caf&lt;/td&gt;&lt;td&gt;jbl_begin.caf&lt;/td&gt;&lt;td&gt;JBL_Begin&lt;/td&gt;&lt;td&gt;Available since 3.0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1111&lt;/td&gt;&lt;td&gt;jbl_confirm.caf&lt;/td&gt;&lt;td&gt;jbl_confirm.caf&lt;/td&gt;&lt;td&gt;JBL_Confirm&lt;/td&gt;&lt;td&gt;Available since 3.0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1112&lt;/td&gt;&lt;td&gt;jbl_cancel.caf&lt;/td&gt;&lt;td&gt;jbl_cancel.caf&lt;/td&gt;&lt;td&gt;JBL_Cancel&lt;/td&gt;&lt;td&gt;Available since 3.0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1113&lt;/td&gt;&lt;td&gt;begin_record.caf&lt;/td&gt;&lt;td&gt;begin_record.caf&lt;/td&gt;&lt;td&gt;BeginRecording&lt;/td&gt;&lt;td&gt;Available since 3.0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1114&lt;/td&gt;&lt;td&gt;end_record.caf&lt;/td&gt;&lt;td&gt;end_record.caf&lt;/td&gt;&lt;td&gt;EndRecording&lt;/td&gt;&lt;td&gt;Available since 3.0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1115&lt;/td&gt;&lt;td&gt;jbl_ambiguous.caf&lt;/td&gt;&lt;td&gt;jbl_ambiguous.caf&lt;/td&gt;&lt;td&gt;JBL_Ambiguous&lt;/td&gt;&lt;td&gt;Available since 3.0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1116&lt;/td&gt;&lt;td&gt;jbl_no_match.caf&lt;/td&gt;&lt;td&gt;jbl_no_match.caf&lt;/td&gt;&lt;td&gt;JBL_NoMatch&lt;/td&gt;&lt;td&gt;Available since 3.0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1117&lt;/td&gt;&lt;td&gt;begin_video_record.caf&lt;/td&gt;&lt;td&gt;begin_video_record.caf&lt;/td&gt;&lt;td&gt;BeginVideoRecording&lt;/td&gt;&lt;td&gt;Available since 3.0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1118&lt;/td&gt;&lt;td&gt;end_video_record.caf&lt;/td&gt;&lt;td&gt;end_video_record.caf&lt;/td&gt;&lt;td&gt;EndVideoRecording&lt;/td&gt;&lt;td&gt;Available since 3.0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1150&lt;/td&gt;&lt;td&gt;vc~invitation-accepted.caf&lt;/td&gt;&lt;td&gt;vc~invitation-accepted.caf&lt;/td&gt;&lt;td&gt;VCInvitationAccepted&lt;/td&gt;&lt;td&gt;Available since 4.0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1151&lt;/td&gt;&lt;td&gt;vc~ringing.caf&lt;/td&gt;&lt;td&gt;vc~ringing.caf&lt;/td&gt;&lt;td&gt;VCRinging&lt;/td&gt;&lt;td&gt;Available since 4.0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1152&lt;/td&gt;&lt;td&gt;vc~ended.caf&lt;/td&gt;&lt;td&gt;vc~ended.caf&lt;/td&gt;&lt;td&gt;VCEnded&lt;/td&gt;&lt;td&gt;Available since 4.0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1153&lt;/td&gt;&lt;td&gt;ct-call-waiting.caf&lt;/td&gt;&lt;td&gt;ct-call-waiting.caf&lt;/td&gt;&lt;td&gt;VCCallWaiting&lt;/td&gt;&lt;td&gt;Available since 4.1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1154&lt;/td&gt;&lt;td&gt;vc~ringing.caf&lt;/td&gt;&lt;td&gt;vc~ringing.caf&lt;/td&gt;&lt;td&gt;VCCallUpgrade&lt;/td&gt;&lt;td&gt;Available since 4.1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1200&lt;/td&gt;&lt;td&gt;dtmf-0.caf&lt;/td&gt;&lt;td&gt;dtmf-0.caf&lt;/td&gt;&lt;td&gt;TouchTone&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1201&lt;/td&gt;&lt;td&gt;dtmf-1.caf&lt;/td&gt;&lt;td&gt;dtmf-1.caf&lt;/td&gt;&lt;td&gt;TouchTone&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1202&lt;/td&gt;&lt;td&gt;dtmf-2.caf&lt;/td&gt;&lt;td&gt;dtmf-2.caf&lt;/td&gt;&lt;td&gt;TouchTone&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1203&lt;/td&gt;&lt;td&gt;dtmf-3.caf&lt;/td&gt;&lt;td&gt;dtmf-3.caf&lt;/td&gt;&lt;td&gt;TouchTone&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1204&lt;/td&gt;&lt;td&gt;dtmf-4.caf&lt;/td&gt;&lt;td&gt;dtmf-4.caf&lt;/td&gt;&lt;td&gt;TouchTone&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1205&lt;/td&gt;&lt;td&gt;dtmf-5.caf&lt;/td&gt;&lt;td&gt;dtmf-5.caf&lt;/td&gt;&lt;td&gt;TouchTone&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1206&lt;/td&gt;&lt;td&gt;dtmf-6.caf&lt;/td&gt;&lt;td&gt;dtmf-6.caf&lt;/td&gt;&lt;td&gt;TouchTone&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1207&lt;/td&gt;&lt;td&gt;dtmf-7.caf&lt;/td&gt;&lt;td&gt;dtmf-7.caf&lt;/td&gt;&lt;td&gt;TouchTone&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1208&lt;/td&gt;&lt;td&gt;dtmf-8.caf&lt;/td&gt;&lt;td&gt;dtmf-8.caf&lt;/td&gt;&lt;td&gt;TouchTone&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1209&lt;/td&gt;&lt;td&gt;dtmf-9.caf&lt;/td&gt;&lt;td&gt;dtmf-9.caf&lt;/td&gt;&lt;td&gt;TouchTone&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1210&lt;/td&gt;&lt;td&gt;dtmf-star.caf&lt;/td&gt;&lt;td&gt;dtmf-star.caf&lt;/td&gt;&lt;td&gt;TouchTone&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1211&lt;/td&gt;&lt;td&gt;dtmf-pound.caf&lt;/td&gt;&lt;td&gt;dtmf-pound.caf&lt;/td&gt;&lt;td&gt;TouchTone&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1254&lt;/td&gt;&lt;td&gt;long_low_short_high.caf&lt;/td&gt;&lt;td&gt;long_low_short_high.caf&lt;/td&gt;&lt;td&gt;Headset_StartCall&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1255&lt;/td&gt;&lt;td&gt;short_double_high.caf&lt;/td&gt;&lt;td&gt;short_double_high.caf&lt;/td&gt;&lt;td&gt;Headset_Redial&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1256&lt;/td&gt;&lt;td&gt;short_low_high.caf&lt;/td&gt;&lt;td&gt;short_low_high.caf&lt;/td&gt;&lt;td&gt;Headset_AnswerCall&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1257&lt;/td&gt;&lt;td&gt;short_double_low.caf&lt;/td&gt;&lt;td&gt;short_double_low.caf&lt;/td&gt;&lt;td&gt;Headset_EndCall&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1258&lt;/td&gt;&lt;td&gt;short_double_low.caf&lt;/td&gt;&lt;td&gt;short_double_low.caf&lt;/td&gt;&lt;td&gt;Headset_CallWaitingActions&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1259&lt;/td&gt;&lt;td&gt;middle_9_short_double_low.caf&lt;/td&gt;&lt;td&gt;middle_9_short_double_low.caf&lt;/td&gt;&lt;td&gt;Headset_TransitionEnd&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1300&lt;/td&gt;&lt;td&gt;Voicemail.caf&lt;/td&gt;&lt;td&gt;Voicemail.caf&lt;/td&gt;&lt;td&gt;SystemSoundPreview&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1301&lt;/td&gt;&lt;td&gt;ReceivedMessage.caf&lt;/td&gt;&lt;td&gt;ReceivedMessage.caf&lt;/td&gt;&lt;td&gt;SystemSoundPreview&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1302&lt;/td&gt;&lt;td&gt;new-mail.caf&lt;/td&gt;&lt;td&gt;new-mail.caf&lt;/td&gt;&lt;td&gt;SystemSoundPreview&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1303&lt;/td&gt;&lt;td&gt;mail-sent.caf&lt;/td&gt;&lt;td&gt;mail-sent.caf&lt;/td&gt;&lt;td&gt;SystemSoundPreview&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1304&lt;/td&gt;&lt;td&gt;alarm.caf&lt;/td&gt;&lt;td&gt;sq_alarm.caf&lt;/td&gt;&lt;td&gt;SystemSoundPreview&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1305&lt;/td&gt;&lt;td&gt;lock.caf&lt;/td&gt;&lt;td&gt;sq_lock.caf&lt;/td&gt;&lt;td&gt;SystemSoundPreview&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1306&lt;/td&gt;&lt;td&gt;Tock.caf&lt;/td&gt;&lt;td&gt;sq_tock.caf&lt;/td&gt;&lt;td&gt;KeyPressClickPreview&lt;/td&gt;&lt;td&gt;The category was SystemSoundPreview before 3.2.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1307&lt;/td&gt;&lt;td&gt;sms-received1.caf&lt;/td&gt;&lt;td&gt;sms-received1.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Selection&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1308&lt;/td&gt;&lt;td&gt;sms-received2.caf&lt;/td&gt;&lt;td&gt;sms-received2.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Selection&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1309&lt;/td&gt;&lt;td&gt;sms-received3.caf&lt;/td&gt;&lt;td&gt;sms-received3.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Selection&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1310&lt;/td&gt;&lt;td&gt;sms-received4.caf&lt;/td&gt;&lt;td&gt;sms-received4.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Selection&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1311&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;td&gt;SMSReceived_Vibrate&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1312&lt;/td&gt;&lt;td&gt;sms-received1.caf&lt;/td&gt;&lt;td&gt;sms-received1.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Selection&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1313&lt;/td&gt;&lt;td&gt;sms-received5.caf&lt;/td&gt;&lt;td&gt;sms-received5.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Selection&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1314&lt;/td&gt;&lt;td&gt;sms-received6.caf&lt;/td&gt;&lt;td&gt;sms-received6.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Selection&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1315&lt;/td&gt;&lt;td&gt;Voicemail.caf&lt;/td&gt;&lt;td&gt;Voicemail.caf&lt;/td&gt;&lt;td&gt;SystemSoundPreview&lt;/td&gt;&lt;td&gt;Available since 2.1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1320&lt;/td&gt;&lt;td&gt;Anticipate.caf&lt;/td&gt;&lt;td&gt;Anticipate.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Selection&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1321&lt;/td&gt;&lt;td&gt;Bloom.caf&lt;/td&gt;&lt;td&gt;Bloom.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Selection&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1322&lt;/td&gt;&lt;td&gt;Calypso.caf&lt;/td&gt;&lt;td&gt;Calypso.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Selection&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1323&lt;/td&gt;&lt;td&gt;Choo_Choo.caf&lt;/td&gt;&lt;td&gt;Choo_Choo.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Selection&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1324&lt;/td&gt;&lt;td&gt;Descent.caf&lt;/td&gt;&lt;td&gt;Descent.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Selection&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1325&lt;/td&gt;&lt;td&gt;Fanfare.caf&lt;/td&gt;&lt;td&gt;Fanfare.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Selection&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1326&lt;/td&gt;&lt;td&gt;Ladder.caf&lt;/td&gt;&lt;td&gt;Ladder.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Selection&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1327&lt;/td&gt;&lt;td&gt;Minuet.caf&lt;/td&gt;&lt;td&gt;Minuet.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Selection&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1328&lt;/td&gt;&lt;td&gt;News_Flash.caf&lt;/td&gt;&lt;td&gt;News_Flash.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Selection&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1329&lt;/td&gt;&lt;td&gt;Noir.caf&lt;/td&gt;&lt;td&gt;Noir.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Selection&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1330&lt;/td&gt;&lt;td&gt;Sherwood_Forest.caf&lt;/td&gt;&lt;td&gt;Sherwood_Forest.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Selection&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1331&lt;/td&gt;&lt;td&gt;Spell.caf&lt;/td&gt;&lt;td&gt;Spell.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Selection&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1332&lt;/td&gt;&lt;td&gt;Suspense.caf&lt;/td&gt;&lt;td&gt;Suspense.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Selection&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1333&lt;/td&gt;&lt;td&gt;Telegraph.caf&lt;/td&gt;&lt;td&gt;Telegraph.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Selection&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1334&lt;/td&gt;&lt;td&gt;Tiptoes.caf&lt;/td&gt;&lt;td&gt;Tiptoes.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Selection&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1335&lt;/td&gt;&lt;td&gt;Typewriters.caf&lt;/td&gt;&lt;td&gt;Typewriters.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Selection&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1336&lt;/td&gt;&lt;td&gt;Update.caf&lt;/td&gt;&lt;td&gt;Update.caf&lt;/td&gt;&lt;td&gt;SMSReceived_Selection&lt;/td&gt;&lt;td&gt;Available since 4.2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1350&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;td&gt;RingerVibeChanged&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1351&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;td&gt;SilentVibeChanged&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;4095&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;td&gt;Vibrate&lt;/td&gt;&lt;td&gt;There was no category for this sound before 2.2.&lt;br /&gt;In the SDK this is the constant&amp;nbsp;&lt;a class="external text" title="http://developer.apple.com/library/ios/documentation/AudioToolbox/Reference/SystemSoundServicesReference/Reference/reference.html#//apple_ref/doc/c_ref/kSystemSoundID_Vibrate" href="http://developer.apple.com/library/ios/documentation/AudioToolbox/Reference/SystemSoundServicesReference/Reference/reference.html#//apple_ref/doc/c_ref/kSystemSoundID_Vibrate" rel="nofollow"&gt;&lt;tt&gt;kSystemSoundID_Vibrate&lt;/tt&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://www.cnblogs.com/chen1987lei/aggbug/2341535.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/chen1987lei/archive/2012/02/07/2341535.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/chen1987lei/archive/2011/09/09/2172757.html</id><title type="text">UIButton 详解</title><summary type="text">转自： http://blog.csdn.net/jb80400812/article/details/6614184创建UIButtonUIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];btn.frame = CGRectMake(30, 360, 90, 35);[btn setTitle:@"ZoomIn" forState:UIControlStateNormal];[btn setTitle:@"ZoomIn" forState:UIControlStateHig</summary><published>2011-09-09T09:58:00Z</published><updated>2011-09-09T09:58:00Z</updated><author><name>BradyChen</name><uri>http://www.cnblogs.com/chen1987lei/</uri></author><link rel="alternate" href="http://www.cnblogs.com/chen1987lei/archive/2011/09/09/2172757.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chen1987lei/archive/2011/09/09/2172757.html"/><content type="html">&lt;div id="article_details" class="details"&gt;&lt;div class="article_title"&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color: #0000cd; line-height: 26px; font-family: arial;"&gt;转自： &lt;a href="http://blog.csdn.net/jb80400812/article/details/6614184"&gt;http://blog.csdn.net/jb80400812/article/details/6614184&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color: #0000cd; line-height: 26px; font-family: arial;"&gt;创建UIButton&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="article_content"&gt;&lt;p class="p3"&gt;&lt;span class="s2"&gt;UIButton&lt;/span&gt; &lt;span class="s3"&gt;*btn = [&lt;/span&gt;&lt;span class="s2"&gt;UIButton&lt;/span&gt; buttonWithType&lt;span class="s3"&gt;:&lt;/span&gt;UIButtonTypeRoundedRect&lt;span class="s3"&gt;];&lt;/span&gt;&lt;/p&gt;&lt;p class="p4"&gt;btn.&lt;span class="s2"&gt;frame&lt;/span&gt; = &lt;span class="s4"&gt;CGRectMake&lt;/span&gt;(&lt;span class="s5"&gt;30&lt;/span&gt;, &lt;span class="s5"&gt;360&lt;/span&gt;, &lt;span class="s5"&gt;90&lt;/span&gt;, &lt;span class="s5"&gt;35&lt;/span&gt;);&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p class="p2"&gt;&lt;span style="color: #0000cd;"&gt;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="p7"&gt;&lt;span class="s3"&gt;[btn&lt;/span&gt; setTitle&lt;span class="s3"&gt;:&lt;/span&gt;&lt;span class="s6"&gt;@"ZoomIn"&lt;/span&gt; forState&lt;span class="s3"&gt;:&lt;/span&gt;UIControlStateNormal&lt;span class="s3"&gt;];&lt;/span&gt;&lt;/p&gt;&lt;p class="p7"&gt;&lt;span class="s3"&gt;[btn&lt;/span&gt; setTitle&lt;span class="s3"&gt;:&lt;/span&gt;&lt;span class="s6"&gt;@"ZoomIn"&lt;/span&gt; forState&lt;span class="s3"&gt;:&lt;/span&gt;UIControlStateHighlighted&lt;span class="s3"&gt;];&lt;/span&gt;&lt;/p&gt;&lt;p class="p4"&gt;&lt;/p&gt;&lt;p class="p7"&gt;&lt;span class="s3"&gt;[btn&lt;/span&gt; addTarget&lt;span class="s3"&gt;:&lt;/span&gt;&lt;span class="s7"&gt;self&lt;/span&gt; action&lt;span class="s3"&gt;:&lt;/span&gt;&lt;span class="s7"&gt;@selector&lt;/span&gt;&lt;span class="s3"&gt;(&lt;/span&gt;&lt;span class="s8"&gt;zoomInAction&lt;/span&gt;&lt;span class="s3"&gt;:)&lt;/span&gt; forControlEvents&lt;span class="s3"&gt;:&lt;/span&gt;UIControlEventTouchUpInside&lt;span class="s3"&gt;];&lt;/span&gt;&lt;/p&gt;&lt;p class="p7"&gt;&lt;span class="s3"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="p7"&gt;&lt;span class="s3"&gt;&lt;span style="color: #333333; line-height: 24px; font-family: 'Lucida Grande', 'Lucida Sans Unicode', Arial, Verdana, sans-serif; font-size: 14px; border-collapse: collapse;"&gt;//@selector可以理解为"选择子"，selector是一个指针变量，类似于sender。 这里是将method的方法指定给新建的这个btn。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="p7"&gt;&lt;span class="s3"&gt;&lt;span style="color: #333333; line-height: 24px; font-family: 'Lucida Grande', 'Lucida Sans Unicode', Arial, Verdana, sans-serif; font-size: 14px; border-collapse: collapse;"&gt;/*&lt;span style="color: #333333; line-height: 24px; font-family: 'Lucida Grande', 'Lucida Sans Unicode', Arial, Verdana, sans-serif; font-size: 14px; border-collapse: collapse;"&gt;在 method 方法里可以将 sender 看作是 btn 了    &lt;br style="outline-style: none;" /&gt;比如设置btn的hidden属性等等  &lt;br style="outline-style: none;" /&gt;             btn.hidden = YES;         &lt;br style="outline-style: none;" /&gt;             这样btn被隐藏了&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="p7"&gt;&lt;/p&gt;&lt;p class="p7"&gt;&lt;/p&gt;&lt;p class="p7"&gt;&lt;/p&gt;&lt;p class="p7"&gt;&lt;span class="s3"&gt;&lt;span style="color: #333333; line-height: 24px; font-family: 'Lucida Grande', 'Lucida Sans Unicode', Arial, Verdana, sans-serif; font-size: 14px; border-collapse: collapse;"&gt;&lt;span style="color: #333333; line-height: 24px; font-family: 'Lucida Grande', 'Lucida Sans Unicode', Arial, Verdana, sans-serif; font-size: 14px; border-collapse: collapse;"&gt;*/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="color: #005000; outline-style: none;" class="br0"&gt;[&lt;/span&gt;&lt;span style="color: #0000ff; outline-style: none;" class="kw4"&gt;view&lt;/span&gt; &lt;span style="color: #0000ff; outline-style: none;" class="kw4"&gt;addSubview&lt;/span&gt;&lt;span style="outline-style: none;" class="sy0"&gt;:&lt;/span&gt;btn&lt;span style="color: #005000; outline-style: none;" class="br0"&gt;]&lt;/span&gt;;&lt;br/&gt;&lt;span style="outline-style: none;" class="sy0"&gt;-&lt;/span&gt;&lt;span style="color: #005000; outline-style: none;" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff; outline-style: none;" class="kw4"&gt;void&lt;/span&gt;&lt;span style="color: #005000; outline-style: none;" class="br0"&gt;)&lt;/span&gt;&lt;span style="color: #6d6d6d; line-height: 26px; font-family: monospace; white-space: pre;"&gt;zoomInAction&lt;/span&gt;&lt;span style="outline-style: none;" class="sy0"&gt;:&lt;/span&gt;&lt;span style="color: #005000; outline-style: none;" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff; outline-style: none;" class="kw4"&gt;id&lt;/span&gt;&lt;span style="color: #005000; outline-style: none;" class="br0"&gt;)&lt;/span&gt;&lt;span style="color: #0000ff; outline-style: none;" class="kw4"&gt;sender&lt;/span&gt; &lt;span style="color: #005000; outline-style: none;" class="br0"&gt;{&lt;/span&gt;&lt;br/&gt; &lt;br/&gt;&lt;span style="color: #005000; outline-style: none;" class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p class="p7"&gt;&lt;span class="s3"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="p7"&gt;&lt;span class="s3"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="p7"&gt;&lt;span class="s3"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="p7"&gt;&lt;span class="s3"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;h1 style="margin: 0px 0px 0.1em; color: black; line-height: 26px; padding-top: 0.5em; padding-bottom: 0.17em; font-size: 24px; font-weight: normal; border-bottom-color: #aaaaaa; border-bottom-width: 1px; border-bottom-style: solid; background-image: none;" class="firstHeading"&gt;UIButton的&lt;/strong&gt;&lt;/p&gt;&lt;div style="line-height: 26px;" id="bodyContent"&gt;&lt;div style="margin: 0px 0px 1.4em 1em; width: auto; color: #7d7d7d; line-height: 1.2em; font-size: 12px;" id="contentSub"&gt;&lt;/div&gt;&lt;p&gt;从UIControl继承：UIView的：UIResponder：NSObject的符合NSCoding NSCoding（UIView的）NSObject的（NSObject的）框架/系统/资源库/框架/ UIKit.framework在iPhone OS 2.0和更高的可用性。声明UIButton.h相关的代码示例配件BubbleLevel HeadsUpUI TheElements UICatalog&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 19px; font-family: sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;table style="padding: 5px; border: 1px solid #aaaaaa; color: black; font-size: 12px; background-color: #f9f9f9;" id="toc" class="toc" summary="目录"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div style="text-align: center;" id="toctitle"&gt;&lt;h2 style="margin: 0px 0px 0.6em; padding: 0px; color: black; font-size: 12px; font-weight: bold; display: inline; background-image: none;"&gt;目录&lt;/strong&gt;&lt;/p&gt; &lt;span style="font-size: 12px;" class="toctoggle"&gt;[ &lt;a style="color: #002bb8; text-decoration: none; background-image: none;" id="togglelink" class="internal" href="http://www.cnblogs.com/chen1987lei/admin/"&gt;隐藏&lt;/a&gt; ]&lt;/span&gt;&lt;/div&gt;&lt;ul style="margin: 0.3em 0px 0px; padding: 0px; text-align: left; line-height: 1.5em; list-style-type: none; list-style-image: none;"&gt;&lt;li style="margin-bottom: 0.1em;" class="toclevel-1"&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" href="http://www.cocoachina.com/wiki/index.php?title=UIButton#Overview"&gt;&lt;span class="tocnumber"&gt;1 &lt;/span&gt;&lt;span class="toctext"&gt;概述&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;" class="toclevel-1"&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" href="http://www.cocoachina.com/wiki/index.php?title=UIButton#Tasks"&gt;&lt;span class="tocnumber"&gt;两个&lt;/span&gt; &lt;span class="toctext"&gt;任务&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;" class="toclevel-1"&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" href="http://www.cocoachina.com/wiki/index.php?title=UIButton#Properties"&gt;&lt;span class="tocnumber"&gt;三个&lt;/span&gt; &lt;span class="toctext"&gt;属性&lt;/span&gt;&lt;/a&gt;&lt;ul style="margin: 0px 0px 0px 2em; padding: 0px; text-align: left; line-height: 1.5em; list-style-type: none; list-style-image: none;"&gt;&lt;li style="margin-bottom: 0.1em;" class="toclevel-2"&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" href="http://www.cocoachina.com/wiki/index.php?title=UIButton#adjustsImageWhenDisabled"&gt;&lt;span class="tocnumber"&gt;3.1 &lt;/span&gt;&lt;span class="toctext"&gt;adjustsImageWhenDisabled&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;" class="toclevel-2"&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" href="http://www.cocoachina.com/wiki/index.php?title=UIButton#adjustsImageWhenHighlighted"&gt;&lt;span class="tocnumber"&gt;3.2 &lt;/span&gt;&lt;span class="toctext"&gt;adjustsImageWhenHighlighted&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;" class="toclevel-2"&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" href="http://www.cocoachina.com/wiki/index.php?title=UIButton#buttonType"&gt;&lt;span class="tocnumber"&gt;3.3 &lt;/span&gt;&lt;span class="toctext"&gt;按钮类型&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;" class="toclevel-2"&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" href="http://www.cocoachina.com/wiki/index.php?title=UIButton#contentEdgeInsets"&gt;&lt;span class="tocnumber"&gt;3.4 &lt;/span&gt;&lt;span class="toctext"&gt;contentEdgeInsets&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;" class="toclevel-2"&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" href="http://www.cocoachina.com/wiki/index.php?title=UIButton#currentImage"&gt;&lt;span class="tocnumber"&gt;3.5 &lt;/span&gt;&lt;span class="toctext"&gt;currentImage&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;" class="toclevel-2"&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" href="http://www.cocoachina.com/wiki/index.php?title=UIButton#currentTitle"&gt;&lt;span class="tocnumber"&gt;3.6 &lt;/span&gt;&lt;span class="toctext"&gt;currentTitle&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;" class="toclevel-2"&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" href="http://www.cocoachina.com/wiki/index.php?title=UIButton#currentTitleColor"&gt;&lt;span class="tocnumber"&gt;3.7 &lt;/span&gt;&lt;span class="toctext"&gt;currentTitleColor&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;" class="toclevel-2"&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" href="http://www.cocoachina.com/wiki/index.php?title=UIButton#currentTitleShadowColor"&gt;&lt;span class="tocnumber"&gt;3.8 &lt;/span&gt;&lt;span class="toctext"&gt;currentTitleShadowColor&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;" class="toclevel-2"&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" href="http://www.cocoachina.com/wiki/index.php?title=UIButton#font"&gt;&lt;span class="tocnumber"&gt;3.9 &lt;/span&gt;&lt;span class="toctext"&gt;字体&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;" class="toclevel-2"&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" href="http://www.cocoachina.com/wiki/index.php?title=UIButton#imageEdgeInsets"&gt;&lt;span class="tocnumber"&gt;3.10 &lt;/span&gt;&lt;span class="toctext"&gt;imageEdgeInsets&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;" class="toclevel-2"&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" href="http://www.cocoachina.com/wiki/index.php?title=UIButton#lineBreakMode"&gt;&lt;span class="tocnumber"&gt;3.11 &lt;/span&gt;&lt;span class="toctext"&gt;lineBreakMode&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;" class="toclevel-2"&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" href="http://www.cocoachina.com/wiki/index.php?title=UIButton#showsTouchWhenHighlighted"&gt;&lt;span class="tocnumber"&gt;3.12 &lt;/span&gt;&lt;span class="toctext"&gt;showsTouchWhenHighlighted&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;" class="toclevel-2"&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" href="http://www.cocoachina.com/wiki/index.php?title=UIButton#titleEdgeInsets"&gt;&lt;span class="tocnumber"&gt;3.13 &lt;/span&gt;&lt;span class="toctext"&gt;titleEdgeInsets&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;" class="toclevel-2"&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" href="http://www.cocoachina.com/wiki/index.php?title=UIButton#titleShadowOffset"&gt;&lt;span class="tocnumber"&gt;3.14 &lt;/span&gt;&lt;span class="toctext"&gt;titleShadowOffset&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;" class="toclevel-1"&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" href="http://www.cocoachina.com/wiki/index.php?title=UIButton#Parameters"&gt;&lt;span class="tocnumber"&gt;4个&lt;/span&gt; &lt;span class="toctext"&gt;参数&lt;/span&gt;&lt;/a&gt;&lt;ul style="margin: 0px 0px 0px 2em; padding: 0px; text-align: left; line-height: 1.5em; list-style-type: none; list-style-image: none;"&gt;&lt;li style="margin-bottom: 0.1em;" class="toclevel-2"&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" href="http://www.cocoachina.com/wiki/index.php?title=UIButton#buttonType_2"&gt;&lt;span class="tocnumber"&gt;4.1 &lt;/span&gt;&lt;span class="toctext"&gt;按钮类型&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;" class="toclevel-2"&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" href="http://www.cocoachina.com/wiki/index.php?title=UIButton#backgroundImageForState:"&gt;&lt;span class="tocnumber"&gt;4.2 &lt;/span&gt;&lt;span class="toctext"&gt;backgroundImageForState：&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;" class="toclevel-2"&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" href="http://www.cocoachina.com/wiki/index.php?title=UIButton#backgroundRectForBounds:"&gt;&lt;span class="tocnumber"&gt;4.3 &lt;/span&gt;&lt;span class="toctext"&gt;backgroundRectForBounds：&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;" class="toclevel-2"&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" href="http://www.cocoachina.com/wiki/index.php?title=UIButton#contentRectForBounds:"&gt;&lt;span class="tocnumber"&gt;4.4 &lt;/span&gt;&lt;span class="toctext"&gt;contentRectForBounds：&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="margin-left: 5px; float: right;" class="editsection"&gt;[ &lt;a style="color: #002bb8; text-decoration: none; background-image: none;" title="编辑段落：概述" href="http://www.cocoachina.com/wiki/index.php?title=UIButton&amp;amp;action=edit&amp;amp;section=1"&gt;编辑&lt;/a&gt; ]&lt;/div&gt;&lt;p&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" name="Overview"&gt;&lt;/a&gt;&lt;/p&gt;&lt;h2 style="margin: 0px 0px 0.6em; color: black; padding-top: 0.5em; padding-bottom: 0.17em; font-size: 19px; font-weight: normal; border-bottom-color: #aaaaaa; border-bottom-width: 1px; border-bottom-style: solid; background-image: none;"&gt;概述&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;UIButton的类是一个UIControl子类，它实现了在触摸屏上的按钮。触摸一个按钮拦截事件和动作消息发送到目标对象时，它的挖掘。设定的目标和行动方法都继承自UIControl。这个类提供了方法来设置标题，图像，按钮等外观属性。通过使用set方法，你可以指定一个不同的外观为每个按钮状态。&lt;/p&gt;&lt;div style="margin-left: 5px; float: right;" class="editsection"&gt;[ &lt;a style="color: #002bb8; text-decoration: none; background-image: none;" title="编辑段落：任务" href="http://www.cocoachina.com/wiki/index.php?title=UIButton&amp;amp;action=edit&amp;amp;section=2"&gt;编辑&lt;/a&gt; ]&lt;/div&gt;&lt;p&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" name="Tasks"&gt;&lt;/a&gt;&lt;/p&gt;&lt;h2 style="margin: 0px 0px 0.6em; color: black; padding-top: 0.5em; padding-bottom: 0.17em; font-size: 19px; font-weight: normal; border-bottom-color: #aaaaaa; border-bottom-width: 1px; border-bottom-style: solid; background-image: none;"&gt;任务&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;创建按钮+ buttonWithType：配置按钮的标题&lt;/p&gt; ButtonType属性字体属性lineBreakMode财产titleShadowOffset财产reversesTitleShadowWhenHighlighted财产  &lt;br/&gt;&lt;p&gt;- setTitle：forState： - setTitleColor：forState： - setTitleShadowColor：forState： - titleColorForState： - titleForState： - titleShadowColorForState：配置按钮图像&lt;/p&gt; adjustsImageWhenHighlighted财产adjustsImageWhenDisabled财产showsTouchWhenHighlighted财产  &lt;br/&gt;&lt;p&gt;- backgroundImageForState： - imageForState： - setBackgroundImage：forState： - setImage：forState：配置边缘的Insets&lt;/p&gt; titleEdgeInsets财产imageEdgeInsets财产contentEdgeInsets财产  &lt;br/&gt;&lt;p&gt;获取当前状态&lt;/p&gt; currentTitle财产currentTitleColor财产currentTitleShadowColor财产currentImage财产currentBackgroundImage财产  &lt;br/&gt;&lt;p&gt;尺寸入门 - backgroundRectForBounds： - contentRectForBounds： - titleRectForContentRect： - imageRectForContentRect：&lt;/p&gt;&lt;div style="margin-left: 5px; float: right;" class="editsection"&gt;[ &lt;a style="color: #002bb8; text-decoration: none; background-image: none;" title="编辑段落：属性" href="http://www.cocoachina.com/wiki/index.php?title=UIButton&amp;amp;action=edit&amp;amp;section=3"&gt;编辑&lt;/a&gt; ]&lt;/div&gt;&lt;p&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" name="Properties"&gt;&lt;/a&gt;&lt;/p&gt;&lt;h2 style="margin: 0px 0px 0.6em; color: black; padding-top: 0.5em; padding-bottom: 0.17em; font-size: 19px; font-weight: normal; border-bottom-color: #aaaaaa; border-bottom-width: 1px; border-bottom-style: solid; background-image: none;"&gt;属性&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Objective - C的属性，看到的Objective - C 2.0编程语言中的&amp;ldquo;属性&amp;rdquo;。&lt;/p&gt;&lt;div style="margin-left: 5px; float: right;" class="editsection"&gt;[ &lt;a style="color: #002bb8; text-decoration: none; background-image: none;" title="编辑段落：adjustsImageWhenDisabled" href="http://www.cocoachina.com/wiki/index.php?title=UIButton&amp;amp;action=edit&amp;amp;section=4"&gt;编辑&lt;/a&gt; ]&lt;/div&gt;&lt;p&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" name="adjustsImageWhenDisabled"&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3 style="margin: 0px 0px 0.3em; color: black; padding-top: 0.5em; padding-bottom: 0.17em; font-size: 17px; font-weight: bold; border-bottom-style: none; background-image: none;"&gt;adjustsImageWhenDisabled&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;一个布尔值，决定是否形象的变化时，该按钮被禁用。&lt;/p&gt;&lt;p&gt;@属性（非原子）BOOL adjustsImageWhenDisabled讨论，如果是的话，图像绘制较深时，按钮被禁用。默认值是YES。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。另请参见&lt;/p&gt; @财产adjustsImageWhenHighlighted&lt;br/&gt;&lt;p&gt;在UIButton.h宣布相关的示例代码BubbleLevel&lt;/p&gt;&lt;div style="margin-left: 5px; float: right;" class="editsection"&gt;[ &lt;a style="color: #002bb8; text-decoration: none; background-image: none;" title="编辑段落：adjustsImageWhenHighlighted" href="http://www.cocoachina.com/wiki/index.php?title=UIButton&amp;amp;action=edit&amp;amp;section=5"&gt;编辑&lt;/a&gt; ]&lt;/div&gt;&lt;p&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" name="adjustsImageWhenHighlighted"&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3 style="margin: 0px 0px 0.3em; color: black; padding-top: 0.5em; padding-bottom: 0.17em; font-size: 17px; font-weight: bold; border-bottom-style: none; background-image: none;"&gt;adjustsImageWhenHighlighted&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;一个布尔值，决定是否按钮时，突出显示图像的变化。&lt;/p&gt;&lt;p&gt;@属性（非原子）BOOL adjustsImageWhenHighlighted讨论，如果是，绘制图像较轻的按钮时，突出显示。默认值是YES。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。另请参见&lt;/p&gt; @财产adjustsImageWhenDisabled&lt;br/&gt;&lt;p&gt;在UIButton.h宣布相关的示例代码BubbleLevel&lt;/p&gt;&lt;div style="margin-left: 5px; float: right;" class="editsection"&gt;[ &lt;a style="color: #002bb8; text-decoration: none; background-image: none;" title="编辑段落：按钮类型" href="http://www.cocoachina.com/wiki/index.php?title=UIButton&amp;amp;action=edit&amp;amp;section=6"&gt;编辑&lt;/a&gt; ]&lt;/div&gt;&lt;p&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" name="buttonType"&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3 style="margin: 0px 0px 0.3em; color: black; padding-top: 0.5em; padding-bottom: 0.17em; font-size: 17px; font-weight: bold; border-bottom-style: none; background-image: none;"&gt;按钮类型&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;按钮类型。（只读）&lt;/p&gt;&lt;p&gt;@属性（非原子，只读）UIButtonType按钮类型的讨论，见UIButtonType的可能值。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。声明在UIButton.h&lt;/p&gt;&lt;div style="margin-left: 5px; float: right;" class="editsection"&gt;[ &lt;a style="color: #002bb8; text-decoration: none; background-image: none;" title="编辑段落：contentEdgeInsets" href="http://www.cocoachina.com/wiki/index.php?title=UIButton&amp;amp;action=edit&amp;amp;section=7"&gt;编辑&lt;/a&gt; ]&lt;/div&gt;&lt;p&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" name="contentEdgeInsets"&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3 style="margin: 0px 0px 0.3em; color: black; padding-top: 0.5em; padding-bottom: 0.17em; font-size: 17px; font-weight: bold; border-bottom-style: none; background-image: none;"&gt;contentEdgeInsets&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;内容的插图或一开始就为每个边缘。&lt;/p&gt;&lt;p&gt;@属性（非原子）UIEdgeInsets contentEdgeInsets如果每条边的价值是积极的，指定的插图，否则，指定一开始。一个插图是周围绘制矩形的保证金;每边（左，右，顶部和底部），可以有不同的值。使用UIEdgeInsetsMake功能设置此属性。默认值是UIEdgeInsetsZero。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。另请参见&lt;/p&gt; _AT_财产imageEdgeInsets&lt;br/&gt;&lt;p&gt;宣布UIButton.h currentBackgroundImage按钮上显示当前的背景图像。（只读）&lt;/p&gt;&lt;p&gt;@属性（只读，非原子，保留）的UIImage * currentBackgroundImage讨论这个值可以为零。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。另请参见&lt;/p&gt; _AT_财产currentImage&lt;br/&gt;&lt;p&gt;声明在UIButton.h&lt;/p&gt;&lt;div style="margin-left: 5px; float: right;" class="editsection"&gt;[ &lt;a style="color: #002bb8; text-decoration: none; background-image: none;" title="编辑段落：currentImage" href="http://www.cocoachina.com/wiki/index.php?title=UIButton&amp;amp;action=edit&amp;amp;section=8"&gt;编辑&lt;/a&gt; ]&lt;/div&gt;&lt;p&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" name="currentImage"&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3 style="margin: 0px 0px 0.3em; color: black; padding-top: 0.5em; padding-bottom: 0.17em; font-size: 17px; font-weight: bold; border-bottom-style: none; background-image: none;"&gt;currentImage&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;当前图像上显示的按钮。（只读）&lt;/p&gt;&lt;p&gt;@属性（只读，非原子，保留）的UIImage * currentImage讨论这个值可以为零。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。另请参见&lt;/p&gt; _AT_财产currentBackgroundImage&lt;br/&gt;&lt;p&gt;声明在UIButton.h&lt;/p&gt;&lt;div style="margin-left: 5px; float: right;" class="editsection"&gt;[ &lt;a style="color: #002bb8; text-decoration: none; background-image: none;" title="编辑段落：currentTitle" href="http://www.cocoachina.com/wiki/index.php?title=UIButton&amp;amp;action=edit&amp;amp;section=9"&gt;编辑&lt;/a&gt; ]&lt;/div&gt;&lt;p&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" name="currentTitle"&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3 style="margin: 0px 0px 0.3em; color: black; padding-top: 0.5em; padding-bottom: 0.17em; font-size: 17px; font-weight: bold; border-bottom-style: none; background-image: none;"&gt;currentTitle&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;当前标题，按钮上显示的。（只读）&lt;/p&gt;&lt;p&gt;@属性（只读，非原子，保留）的NSString * currentTitle讨论这个值可能为零。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。另请参见&lt;/p&gt; @财产currentTitleColor财产currentTitleShadowColor&lt;br/&gt;&lt;p&gt;声明在UIButton.h&lt;/p&gt;&lt;div style="margin-left: 5px; float: right;" class="editsection"&gt;[ &lt;a style="color: #002bb8; text-decoration: none; background-image: none;" title="编辑段落：currentTitleColor" href="http://www.cocoachina.com/wiki/index.php?title=UIButton&amp;amp;action=edit&amp;amp;section=10"&gt;编辑&lt;/a&gt; ]&lt;/div&gt;&lt;p&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" name="currentTitleColor"&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3 style="margin: 0px 0px 0.3em; color: black; padding-top: 0.5em; padding-bottom: 0.17em; font-size: 17px; font-weight: bold; border-bottom-style: none; background-image: none;"&gt;currentTitleColor&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;颜色用于显示标题。（只读）&lt;/p&gt;&lt;p&gt;@属性（只读，非原子，保留）UIColor * currentTitleColor讨论这个值是保证不会是零。默认值是白色。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。另请参见&lt;/p&gt; @财产currentTitle财产currentTitleShadowColor&lt;br/&gt;&lt;p&gt;声明在UIButton.h&lt;/p&gt;&lt;div style="margin-left: 5px; float: right;" class="editsection"&gt;[ &lt;a style="color: #002bb8; text-decoration: none; background-image: none;" title="编辑段落：currentTitleShadowColor" href="http://www.cocoachina.com/wiki/index.php?title=UIButton&amp;amp;action=edit&amp;amp;section=11"&gt;编辑&lt;/a&gt; ]&lt;/div&gt;&lt;p&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" name="currentTitleShadowColor"&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3 style="margin: 0px 0px 0.3em; color: black; padding-top: 0.5em; padding-bottom: 0.17em; font-size: 17px; font-weight: bold; border-bottom-style: none; background-image: none;"&gt;currentTitleShadowColor&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;标题的阴影的颜色。（只读）&lt;/p&gt;&lt;p&gt;@属性（只读，非原子，保留）UIColor * currentTitleShadowColor讨论默认值是白色。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。另请参见&lt;/p&gt; @财产currentTitle财产currentTitleColor&lt;br/&gt;&lt;p&gt;声明在UIButton.h&lt;/p&gt;&lt;div style="margin-left: 5px; float: right;" class="editsection"&gt;[ &lt;a style="color: #002bb8; text-decoration: none; background-image: none;" title="编辑段落：字体" href="http://www.cocoachina.com/wiki/index.php?title=UIButton&amp;amp;action=edit&amp;amp;section=12"&gt;编辑&lt;/a&gt; ]&lt;/div&gt;&lt;p&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" name="font"&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3 style="margin: 0px 0px 0.3em; color: black; padding-top: 0.5em; padding-bottom: 0.17em; font-size: 17px; font-weight: bold; border-bottom-style: none; background-image: none;"&gt;字体&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;字体用来显示按钮上的文字。&lt;/p&gt;&lt;p&gt;@属性（非原子，保留）UIFont *字体的讨论，如果为零，使用系统字体。默认值是零。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。声明在UIButton.h&lt;/p&gt;&lt;div style="margin-left: 5px; float: right;" class="editsection"&gt;[ &lt;a style="color: #002bb8; text-decoration: none; background-image: none;" title="编辑段落：imageEdgeInsets" href="http://www.cocoachina.com/wiki/index.php?title=UIButton&amp;amp;action=edit&amp;amp;section=13"&gt;编辑&lt;/a&gt; ]&lt;/div&gt;&lt;p&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" name="imageEdgeInsets"&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3 style="margin: 0px 0px 0.3em; color: black; padding-top: 0.5em; padding-bottom: 0.17em; font-size: 17px; font-weight: bold; border-bottom-style: none; background-image: none;"&gt;imageEdgeInsets&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;图像插图或一开始就为每个边缘。&lt;/p&gt;&lt;p&gt;@属性（非原子）UIEdgeInsets imageEdgeInsets如果每条边的价值是积极的，指定的插图，否则，指定一开始。一个插图是周围绘制矩形的保证金;每边（左，右，顶部和底部），可以有不同的值。使用UIEdgeInsetsMake功能设置此属性。默认值是UIEdgeInsetsZero。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。另请参见&lt;/p&gt; _AT_财产titleEdgeInsets&lt;br/&gt;&lt;p&gt;声明在UIButton.h&lt;/p&gt;&lt;div style="margin-left: 5px; float: right;" class="editsection"&gt;[ &lt;a style="color: #002bb8; text-decoration: none; background-image: none;" title="编辑段落：lineBreakMode" href="http://www.cocoachina.com/wiki/index.php?title=UIButton&amp;amp;action=edit&amp;amp;section=14"&gt;编辑&lt;/a&gt; ]&lt;/div&gt;&lt;p&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" name="lineBreakMode"&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3 style="margin: 0px 0px 0.3em; color: black; padding-top: 0.5em; padding-bottom: 0.17em; font-size: 17px; font-weight: bold; border-bottom-style: none; background-image: none;"&gt;lineBreakMode&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;绘制文本时使用的换行模式。&lt;/p&gt;&lt;p&gt;属性（非原子）UILineBreakMode lineBreakMode讨论这个属性是UILineBreakMode描述的常量之一。默认值是UILineBreakModeMiddleTruncation。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。在UIButton.h声明reversesTitleShadowWhenHighlighted一个布尔值，决定是否按钮时，突出的标题阴影的变化。&lt;/p&gt;&lt;p&gt;如果有属性（非原子）BOOL reversesTitleShadowWhenHighlighted讨论，从雕刻的影子时，突出浮雕外观的变化。默认值是NO。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。声明在UIButton.h&lt;/p&gt;&lt;div style="margin-left: 5px; float: right;" class="editsection"&gt;[ &lt;a style="color: #002bb8; text-decoration: none; background-image: none;" title="编辑段落：showsTouchWhenHighlighted" href="http://www.cocoachina.com/wiki/index.php?title=UIButton&amp;amp;action=edit&amp;amp;section=15"&gt;编辑&lt;/a&gt; ]&lt;/div&gt;&lt;p&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" name="showsTouchWhenHighlighted"&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3 style="margin: 0px 0px 0.3em; color: black; padding-top: 0.5em; padding-bottom: 0.17em; font-size: 17px; font-weight: bold; border-bottom-style: none; background-image: none;"&gt;showsTouchWhenHighlighted&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;一个布尔值，决定是否点击按钮会导致其发光。&lt;/p&gt;&lt;p&gt;@属性（非原子）BOOL showsTouchWhenHighlighted讨论，如果是的话，按钮发光时挖掘出来，否则，它不会。图像和按钮的行为是没有改变的辉光。默认值是NO。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。另请参见&lt;/p&gt; @财产adjustsImageWhenHighlighted&lt;br/&gt;&lt;p&gt;声明在UIButton.h&lt;/p&gt;&lt;div style="margin-left: 5px; float: right;" class="editsection"&gt;[ &lt;a style="color: #002bb8; text-decoration: none; background-image: none;" title="编辑段落：titleEdgeInsets" href="http://www.cocoachina.com/wiki/index.php?title=UIButton&amp;amp;action=edit&amp;amp;section=16"&gt;编辑&lt;/a&gt; ]&lt;/div&gt;&lt;p&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" name="titleEdgeInsets"&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3 style="margin: 0px 0px 0.3em; color: black; padding-top: 0.5em; padding-bottom: 0.17em; font-size: 17px; font-weight: bold; border-bottom-style: none; background-image: none;"&gt;titleEdgeInsets&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;标题插图或一开始就为每个边缘。&lt;/p&gt;&lt;p&gt;@属性（非原子）UIEdgeInsets titleEdgeInsets如果每条边的价值是积极的，指定的插图，否则，指定一开始。一个插图是周围绘制矩形的保证金;每边（左，右，顶部和底部），可以有不同的值。使用UIEdgeInsetsMake功能设置此属性。默认值是UIEdgeInsetsZero。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。另请参见&lt;/p&gt; _AT_财产imageEdgeInsets&lt;br/&gt;&lt;p&gt;声明在UIButton.h&lt;/p&gt;&lt;div style="margin-left: 5px; float: right;" class="editsection"&gt;[ &lt;a style="color: #002bb8; text-decoration: none; background-image: none;" title="编辑段落：titleShadowOffset" href="http://www.cocoachina.com/wiki/index.php?title=UIButton&amp;amp;action=edit&amp;amp;section=17"&gt;编辑&lt;/a&gt; ]&lt;/div&gt;&lt;p&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" name="titleShadowOffset"&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3 style="margin: 0px 0px 0.3em; color: black; padding-top: 0.5em; padding-bottom: 0.17em; font-size: 17px; font-weight: bold; border-bottom-style: none; background-image: none;"&gt;titleShadowOffset&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;用于显示接收的标题阴影的偏移。&lt;/p&gt;&lt;p&gt;属性（非原子）CGSize titleShadowOffset讨论的水平和垂直偏移值，使用CGSize数据类型的宽度和高度场指定的。正面的价值观总是向上延伸的权利，从用户的角度来看。默认值是CGSizeZero。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。宣布UIButton.h类方法&lt;/p&gt;&lt;p&gt;buttonWithType：创建并返回一个指定类型的新按钮。&lt;/p&gt;&lt;p&gt;+（ID）buttonWithType：（UIButtonType）按钮类型&lt;/p&gt;&lt;div style="margin-left: 5px; float: right;" class="editsection"&gt;[ &lt;a style="color: #002bb8; text-decoration: none; background-image: none;" title="编辑段落：参数" href="http://www.cocoachina.com/wiki/index.php?title=UIButton&amp;amp;action=edit&amp;amp;section=18"&gt;编辑&lt;/a&gt; ]&lt;/div&gt;&lt;p&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" name="Parameters"&gt;&lt;/a&gt;&lt;/p&gt;&lt;h2 style="margin: 0px 0px 0.6em; color: black; padding-top: 0.5em; padding-bottom: 0.17em; font-size: 19px; font-weight: normal; border-bottom-color: #aaaaaa; border-bottom-width: 1px; border-bottom-style: solid; background-image: none;"&gt;参数&lt;/strong&gt;&lt;/p&gt;&lt;div style="margin-left: 5px; float: right;" class="editsection"&gt;[ &lt;a style="color: #002bb8; text-decoration: none; background-image: none;" title="编辑段落：按钮类型" href="http://www.cocoachina.com/wiki/index.php?title=UIButton&amp;amp;action=edit&amp;amp;section=19"&gt;编辑&lt;/a&gt; ]&lt;/div&gt;&lt;p&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" name="buttonType_2"&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3 style="margin: 0px 0px 0.3em; color: black; padding-top: 0.5em; padding-bottom: 0.17em; font-size: 17px; font-weight: bold; border-bottom-style: none; background-image: none;"&gt;按钮类型&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;按钮类型。见的可能值UIButtonType。&lt;/p&gt;&lt;p&gt;返回值一个新创建的按钮。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。相关的示例代码配件BubbleLevel TheElements TouchCells UICatalog宣布UIButton.h实例方法&lt;/p&gt;&lt;div style="margin-left: 5px; float: right;" class="editsection"&gt;[ &lt;a style="color: #002bb8; text-decoration: none; background-image: none;" title="编辑段落：backgroundImageForState：" href="http://www.cocoachina.com/wiki/index.php?title=UIButton&amp;amp;action=edit&amp;amp;section=20"&gt;编辑&lt;/a&gt; ]&lt;/div&gt;&lt;p&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" name="backgroundImageForState:"&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3 style="margin: 0px 0px 0.3em; color: black; padding-top: 0.5em; padding-bottom: 0.17em; font-size: 17px; font-weight: bold; border-bottom-style: none; background-image: none;"&gt;backgroundImageForState：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;返回一个按钮的状态中使用的背景图像。&lt;/p&gt;&lt;p&gt;- （UIImage的*）backgroundImageForState：（UIControlState）状态&lt;/p&gt;&lt;p&gt;参数状态的状态使用的背景图像。可能的值是在UIControlState描述。&lt;/p&gt;&lt;p&gt;返回值用于指定的状态背景图像。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。又见 - setBackgroundImage：forState：UIButton.h声明&lt;/p&gt;&lt;div style="margin-left: 5px; float: right;" class="editsection"&gt;[ &lt;a style="color: #002bb8; text-decoration: none; background-image: none;" title="编辑段落：backgroundRectForBounds：" href="http://www.cocoachina.com/wiki/index.php?title=UIButton&amp;amp;action=edit&amp;amp;section=21"&gt;编辑&lt;/a&gt; ]&lt;/div&gt;&lt;p&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" name="backgroundRectForBounds:"&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3 style="margin: 0px 0px 0.3em; color: black; padding-top: 0.5em; padding-bottom: 0.17em; font-size: 17px; font-weight: bold; border-bottom-style: none; background-image: none;"&gt;backgroundRectForBounds：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;返回矩形的接收绘制其背景。&lt;/p&gt;&lt;p&gt;- （CGRect）backgroundRectForBounds：（CGRect）边界&lt;/p&gt;&lt;p&gt;参数范围接收器的边界矩形。&lt;/p&gt;&lt;p&gt;返回值的矩形接收机，绘制其背景。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。又见 - contentRectForBounds：UIButton.h声明&lt;/p&gt;&lt;div style="margin-left: 5px; float: right;" class="editsection"&gt;[ &lt;a style="color: #002bb8; text-decoration: none; background-image: none;" title="编辑段落：contentRectForBounds：" href="http://www.cocoachina.com/wiki/index.php?title=UIButton&amp;amp;action=edit&amp;amp;section=22"&gt;编辑&lt;/a&gt; ]&lt;/div&gt;&lt;p&gt;&lt;a style="color: #002bb8; text-decoration: none; background-image: none;" name="contentRectForBounds:"&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3 style="margin: 0px 0px 0.3em; color: black; padding-top: 0.5em; padding-bottom: 0.17em; font-size: 17px; font-weight: bold; border-bottom-style: none; background-image: none;"&gt;contentRectForBounds：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;返回矩形的接收提请其全部内容。&lt;/p&gt;&lt;p&gt;- （CGRect）contentRectForBounds：（CGRect）边界&lt;/p&gt;&lt;p&gt;参数限定为接收器的边界矩形。&lt;/p&gt;&lt;p&gt;返回值的矩形接收提请其全部内容。&lt;/p&gt;&lt;p&gt;讨论内容的矩形来显示图像和标题对齐和其他设置，包括任何填充和调整所需的面积。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。 - titleRectForContentRect： - imageRectForContentRect： - backgroundRectForBounds：UIButton.h imageForState中声明：返回一个按钮的状态所使用的图像。&lt;/p&gt;&lt;p&gt;- （UIImage的*）imageForState：（UIControlState）状态&lt;/p&gt;&lt;p&gt;参数状态使用图像的状态。可能的值是在UIControlState描述。&lt;/p&gt;&lt;p&gt;返回值用于指定状态的图像。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。又见 - setImage：forState：UIButton.h imageRectForContentRect宣布：返回接收绘制其图像的矩形。&lt;/p&gt;&lt;p&gt;- （CGRect）imageRectForContentRect：（CGRect）contentRect&lt;/p&gt;&lt;p&gt;参数contentRect接收的内容矩形。&lt;/p&gt;&lt;p&gt;返回值接收绘制其图像的矩形。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。又见 - contentRectForBounds： - titleRectForContentRect：forState：：UIButton.h setBackgroundImage宣布设置背景图像使用指定的按钮状态。&lt;/p&gt;&lt;p&gt;- （无效）setBackgroundImage：（UIImage的*）图像forState：（UIControlState）状态&lt;/p&gt;&lt;p&gt;参数图像背景图像使用指定的状态。&lt;/p&gt;&lt;p&gt;状态的状态使用指定的图像。在UIControlState值的描述。&lt;/p&gt;&lt;p&gt;在一般性讨论，如果没有一个国家指定一个属性，默认是使用UIControlStateNormal的价值。如果UIControlStateNormal值未设置，则属性默认为一个系统的价值。因此，至少，你应该设置为正常状态的价值。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。又见 - backgroundImageForState：相关示例代码配件BubbleLevel TheElements UICatalog UIButton.h setImage宣布：forState：设置图像使用指定的状态。&lt;/p&gt;&lt;p&gt;- （无效）setImage：（UIImage的*）图像forState：（UIControlState）状态&lt;/p&gt;&lt;p&gt;参数图像的图像使用指定的状态。&lt;/p&gt;&lt;p&gt;状态的状态使用指定的标题。在UIControlState值的描述。&lt;/p&gt;&lt;p&gt;在一般性讨论，如果没有一个国家指定一个属性，默认是使用UIControlStateNormal的价值。如果UIControlStateNormal值未设置，则属性默认为一个系统的价值。因此，至少，你应该设置为正常状态的价值。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。又见 - imageForState：forState：：相关示例代码BubbleLevel在UIButton.h setTitle声明TouchCells设置标题使用指定的状态。&lt;/p&gt;&lt;p&gt;- （无效）setTitle是：（NSString的*）forState标题：（UIControlState）状态&lt;/p&gt;&lt;p&gt;参数标题标题使用指定的状态。&lt;/p&gt;&lt;p&gt;状态的状态使用指定的标题。在UIControlState值的描述。&lt;/p&gt;&lt;p&gt;在一般性讨论，如果没有一个国家指定一个属性，默认是使用UIControlStateNormal的价值。如果UIControlStateNormal价值不设置，则属性默认为系统值。因此，至少，你应该设置为正常状态的价值。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。又见 - titleForState：UIButton.h setTitleColor：forState相关的示例代码BubbleLevel UICatalog宣布：设置标题使用指定的状态的颜色。&lt;/p&gt;&lt;p&gt;- （无效）setTitleColor：（UIColor *）颜色forState：（UIControlState）状态&lt;/p&gt;&lt;p&gt;参数颜色的标题使用指定的状态的颜色。&lt;/p&gt;&lt;p&gt;状态的状态使用指定的颜色。在UIControlState值的描述。&lt;/p&gt;&lt;p&gt;在一般性讨论，如果没有一个国家指定一个属性，默认是使用UIControlStateNormal的价值。如果UIControlStateNormal值未设置，则属性默认为一个系统的价值。因此，至少，你应该设置为正常状态的价值。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。又见 - titleColorForState：UIButton.h setTitleShadowColor：forState相关的示例代码BubbleLevel UICatalog宣布：设置标题阴影的颜色，使用指定的状态。&lt;/p&gt;&lt;p&gt;- （无效）setTitleShadowColor：（UIColor *）颜色forState：（UIControlState）状态&lt;/p&gt;&lt;p&gt;参数颜色的标题阴影的颜色，使用指定的状态。&lt;/p&gt;&lt;p&gt;状态的状态使用指定的颜色。在UIControlState值的描述。&lt;/p&gt;&lt;p&gt;在一般性讨论，如果没有一个国家指定一个属性，默认是使用UIControlStateNormal的价值。如果UIControlStateNormal值未设置，则属性默认为一个系统的价值。因此，至少，你应该设置为正常状态的价值。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。又见 - titleShadowColorForState：UIButton.h titleColorForState宣布：返回一个国家使用的标题的颜色。&lt;/p&gt;&lt;p&gt;- （UIColor *）titleColorForState：（UIControlState）状态&lt;/p&gt;&lt;p&gt;参数状态的国家，使用的标题颜色。可能的值是在UIControlState描述。&lt;/p&gt;&lt;p&gt;返回值指定的状态标题的颜色。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。又见 - setTitleColor：forState：UIButton.h titleForState宣布：返回一个国家所使用的标题。&lt;/p&gt;&lt;p&gt;- （NSString的*）titleForState：（UIControlState）状态&lt;/p&gt;&lt;p&gt;参数状态的国家，使用的标题。可能的值是在UIControlState描述。&lt;/p&gt;&lt;p&gt;返回值指定的状态标题。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。又见 - setTitle：forState：UIButton.h titleRectForContentRect宣布：返回矩形的接收器绘制它的标题。&lt;/p&gt;&lt;p&gt;- （CGRect）titleRectForContentRect：（CGRect）contentRect&lt;/p&gt;&lt;p&gt;参数contentRect接收的内容矩形。&lt;/p&gt;&lt;p&gt;返回值的矩形接收器绘制它的标题。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。又见 - contentRectForBounds： - imageRectForContentRect：UIButton.h titleShadowColorForState宣布：返回的阴影颜色为国家所用的标题。&lt;/p&gt;&lt;p&gt;- （UIColor *）titleShadowColorForState：（UIControlState）状态&lt;/p&gt;&lt;p&gt;参数状态的国家，使用的标题阴影颜色。可能的值是在UIControlState描述。&lt;/p&gt;&lt;p&gt;返回值指定的状态标题的影子颜色。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。又见 - setTitleShadowColor：forState：UIButton.h常量声明&lt;/p&gt;&lt;p&gt;UIButtonType指定一个按钮的风格。&lt;/p&gt;&lt;p&gt;的typedef枚举{&lt;/p&gt;UIButtonTypeCustom = 0，UIButtonTypeRoundedRect，UIButtonTypeDetailDisclosure，UIButtonTypeInfoLight，UIButtonTypeInfoDark，UIButtonTypeContactAdd&lt;br/&gt;&lt;p&gt;} UIButtonType;常量UIButtonTypeCustom无按钮的样式。&lt;/p&gt;&lt;p&gt;在iPhone OS 2.0及更高版本。&lt;/p&gt;&lt;p&gt;声明中UIButton.h。&lt;/p&gt;&lt;p&gt;UIButtonTypeRoundedRect一个圆角矩形样式的按钮。&lt;/p&gt;&lt;p&gt;在iPhone OS 2.0及更高版本。&lt;/p&gt;&lt;p&gt;声明中UIButton.h。&lt;/p&gt;&lt;p&gt;UIButtonTypeDetailDisclosure一个详细披露按钮。&lt;/p&gt;&lt;p&gt;在iPhone OS 2.0及更高版本。&lt;/p&gt;&lt;p&gt;声明中UIButton.h。&lt;/p&gt;&lt;p&gt;UIButtonTypeInfoLight一个信息按钮，有一个浅色背景。&lt;/p&gt;&lt;p&gt;在iPhone OS 2.0及更高版本。&lt;/p&gt;&lt;p&gt;声明中UIButton.h。&lt;/p&gt;&lt;p&gt;UIButtonTypeInfoDark一个信息按钮，有一个黑暗的背景。&lt;/p&gt;&lt;p&gt;在iPhone OS 2.0及更高版本。&lt;/p&gt;&lt;p&gt;声明中UIButton.h。&lt;/p&gt;&lt;p&gt;UIButtonTypeContactAdd一个联系人添加&amp;ldquo;按钮。&lt;/p&gt;&lt;p&gt;在iPhone OS 2.0及更高版本。&lt;/p&gt;&lt;p&gt;声明中UIButton.h。&lt;/p&gt;&lt;p&gt;供货情况在iPhone OS 2.0和更高版本。声明在UIButton.h&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/chen1987lei/aggbug/2172757.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/chen1987lei/archive/2011/09/09/2172757.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
