en

hi, it seems you are using microsoft internet explorer. it doesn't match web standard and causes problems browsing this site. please please please use mozilla firefox or google chrome instead. thank you!

zh

哦哦!您正在使用Internet Explorer 瀏覽器,它與我們的網頁標準並不相容,可能會導致畫面顯示不正常。
請改用 Mozilla Firefox 或者 Google Chrome 才能正常瀏覽本網站,謝謝!

7.24.2012

在應用程式中使用 Emoji 繪文字的方法


Emoji 繪文字是日本在通訊上被廣泛使用的一種互動式情境圖片,你可以把它當成是一般的文字符號來使用,就如同一般文字一樣,每一個 Emoji 繪文字都有一個屬於自己的 unicode 編碼,當字符遇到這類的編碼時,就會自動轉換成對應的 Emoji 繪文字,其實不只是 Emoji 繪文字,所有 iOS 上的文字或是符號都有屬於自己的 unicode 編碼,你可以參考文末 Emoji 繪文字的 unicode 編碼,並實作以下程式碼來顯示它們。


以 NSString 的方式顯示
你可以參考以下程式碼,在字串前加上「\u」跳脫字元,來代表 unicode 編碼,將 unicode 所代表的字符以 NSString 直接顯示出來。
NSString *str = @"\uE001"
或者是使用 unsigned int 型態,將 unicode 編碼做數值上的運算。
unsigned int stringCode = 0xE001;

for (int i=0; i<= 50; i++) {
    NSLog(@"%@",[NSString stringWithFormat:@"%C : %X",stringCode + i, stringCode + i]);
}

上述程式碼的部份執行結果


以 UIImage 的方式顯示
Emoji 繪文字的尺寸大小有一定的限制,將 Emoji 繪文字轉換成 UIImage 的方式來顯示,也可以避開這些限制

若要將 Emoji 繪文字轉換成 UIImage 的方式來顯示,必須透過 iOS SDK 所提供的 QuartzCore Framework 來完成,所以首先我們必須先以手動的方式替專案新增 QuartzCore .framework,並且引用對應的標頭檔。


手動替專案增加 QuartzCore.framework

#import <QuartzCore/QuartzCore.h>
對於新增 Framework 有問題的讀者們,請參考 Xcode 4 新增 Framework 的方法一文。

//製作一個繪文字的UILabel
UILabel *label = [[UILabel alloc] init];
NSString *unicode = @"\uE408\uE415\uE001\uE002\uE411";
[label setText:unicode];
[label setBackgroundColor:[UIColor clearColor]];
[label setOpaque:NO];

//將取得文字大小後繪至ImageContext
CGSize textSize = [unicode sizeWithFont:label.font];
label.frame = CGRectMake(0, 0, textSize.width, textSize.height);

UIGraphicsBeginImageContextWithOptions(label.bounds.size, NO, 0.0);
[label.layer renderInContext:UIGraphicsGetCurrentContext()];

UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

[imageView setImage:img];


ps:Emoji 繪文字可以從 iOS 的鍵盤設定上新增「表情符號」鍵盤來取得 Emoji 繪文字專用鍵盤。

以下圖片是由 hasseg.org/stuff/ios-emoji 網站所提供的 Emoji 繪文字 unicode 編碼,另外,如果日後有新的 Emoji 繪文字出現,可以在網路上使用「iOS emoji unicode」等相關字彙進行搜尋,取得新的 unicode 編碼。


Emoji 繪文字 unicode 編碼 E001 至 E05A

Emoji 繪文字 unicode 編碼 E101 至 E15A

Emoji 繪文字 unicode 編碼 E201 至 E253

Emoji 繪文字 unicode 編碼 E401 至 E44C

Emoji 繪文字 unicode 編碼 E501 至 E537







沒有留言:

張貼留言