天天看點

iOS在應用中添加自定義字型

1、網上提供的字型庫有很多,下載下傳完成後,将其導入工程中,一般為ttf格式。

2、注意build phases中的copy bundle resources中是否導入了檔案:

iOS在應用中添加自定義字型

3、在項目的info.plist檔案中添加字型鍵值如下:

iOS在應用中添加自定義字型

這個數組中可以添加多個元素,多個字型庫。

4、這時實際上我們已經将字型添加進了工程中,但是在在使用這個字型時,字型的名字有時和檔案名是不一樣的,我們需要知道真實的字型名稱,通常情況下,我們會講所有字型名稱列印出來:

<a href="http://my.oschina.net/u/2340880/blog/515090#">?</a>

1

2

3

4

5

<code>    </code><code>for</code> <code>(nsstring * name in [uifont familynames]) {</code>

<code>        </code><code>for</code> <code>(nsstring * fo in [uifont fontnamesforfamilyname:name]) {</code>

<code>           </code><code>nslog(@</code><code>"%@"</code><code>,fo);</code>

<code>        </code><code>}</code>

<code>    </code><code>}</code>

5、找到我們需要的字型,如下使用即可:

<code> </code><code>uifont * font = [uifont fontwithname:@</code><code>"yuweij"</code> <code>size:14];</code>

        如果你将所有字型都列印了出來,在其中找到新的字型名稱是身份困難的,尤其是當這個字型的名稱和檔案名相差甚遠的時候,這是一件非常痛苦的事情。

        為了在以後使用自定義字型的時候不必一次一次的經曆這樣的痛苦,在xcode6.3的環境下,我将所有的系統字型擷取後寫入了plist檔案,将這個plist檔案導入項目中,通過如下方法,可以隻列印出新增加的字型:

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<code>    </code><code>nsstring *paths=[[nsbundle mainbundle]pathforresource:@</code><code>"font"</code> <code>oftype:@</code><code>"plist"</code><code>];</code>

<code>    </code><code>//得到完整的檔案名</code>

<code>    </code><code>nsdictionary * rootdic = [nsdictionary dictionarywithcontentsoffile:paths];</code>

<code>    </code><code>//周遊目前所有字型</code>

<code>        </code><code>nsarray * fontarray = [rootdic objectforkey:name];</code>

<code>        </code><code>bool</code> <code>tip = no;</code>

<code>            </code><code>for</code> <code>(nsstring * tmp in fontarray) {</code>

<code>                </code><code>if</code> <code>([tmp isequaltostring:fo]) {</code>

<code>                    </code><code>tip=yes;</code>

<code>                    </code><code>break</code><code>;</code>

<code>                </code><code>}</code>

<code>            </code><code>}</code>

<code>            </code><code>if</code> <code>(!tip) {</code>

<code>                </code><code>nslog(@</code><code>"%@"</code><code>,fo);</code>

繼續閱讀