web-dev-qa-db-ja.com

UILabel iOSで絵文字を表示する方法

私はUILabelでtextviewテキストを細かく表示する必要があります。

UILabel-

lbl.text = @"Happy to help you \U0001F431;

適切に表示されます。

UITextView-

UITextViewテキストを文字列に変換しようとしたところ、ログは-

%F0%9F%99%88%F0%9F%99%89%F0%9F%99%8A

UILabelに表示できるエンコード方法については、どなたかご提案ください。

18
San007
NSString *str = @"Happy to help you \U0001F431";

NSData *data = [str dataUsingEncoding:NSNonLossyASCIIStringEncoding];
NSString *valueUnicode = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];


NSData *dataa = [valueUnicode dataUsingEncoding:NSUTF8StringEncoding];
NSString *valueEmoj = [[NSString alloc] initWithData:dataa encoding:NSNonLossyASCIIStringEncoding];

_lbl.text = valueEmoj;

Swift-3 OR HIGHER

    let str = "Happy to help you \U0001F431"

    let data : NSData = str.dataUsingEncoding(NSNonLossyASCIIStringEncoding)!
    let valueUnicode : String = String(data: data, encoding: NSUTF8StringEncoding)!

    let dataa   : NSData = valueUniCode.dataUsingEncoding(NSUTF8StringEncoding)!
    let valueEmoj : String = String(data: dataa, encoding: NSNonLossyASCIIStringEncoding)!

Swift-4 OR HIGHER

    let str = "Happy to help you \U0001F431"

    let data : NSData = str.dataUsingEncoding(NSNonLossyASCIIStringEncoding)!
    let valueUnicode : String = String(data: data as Data, encoding: String.Encoding.utf8)!

    let dataa   : NSData = valueUnicode.data(using: String.Encoding.utf8)! as NSData
    let valueEmoj : String = String(data: dataa as Data, encoding: String.Encoding.nonLossyASCII)!
24
Bhavesh Nayi

⌃ ⌘ Spaceショートカットを使用してシンボルパネルを表示し、探している絵文字をユニコードなしで直接挿入できます。

lbl.text = @"Happy to help you ????";

(ブラウザに絵文字が表示されない場合は、上記のコードをXcodeにコピーしてください)

45
Sash Zats

Xcodeバージョン7.2.1では、以下のショートカットを使用してシンボルパネルを表示し、絵文字を挿入できます。

ショートカット:(以下の3つのキーを同時に押した)

Ctrl Command Space
8
LuAndre

Swift 3.0solution @Bhavesh Nayiによる更新

    let data =  txtMessage.text!.data(using: .nonLossyASCII)
    let emojiString = String.init(data: data!, encoding: .utf8)

チャットサーバーに送信します

    let data = message.message.data(using: .utf8)
    let emoji = String.init(data: data!, encoding: .nonLossyASCII)

そして、UILablelに絵文字を表示します

6
Sourabh Sharma

Swift 2.3以下の場合

let textViewData : NSData = textViewString.dataUsingEncoding(NSNonLossyASCIIStringEncoding)!
let valueUniCode : String = String(data: textViewData, encoding: NSUTF8StringEncoding)!

let emojData   : NSData = valueUniCode.dataUsingEncoding(NSUTF8StringEncoding)!
let emojString : String = String(data: emojData, encoding: NSNonLossyASCIIStringEncoding)!

Swift 3.0以降の場合

let textViewData = textViewString.data(using: .nonLossyASCII)
let valueUniCode = String.init(data: textViewData!, encoding: .utf8)!

let emojData   = valueUniCode.data(using: .utf8)
let emojString = String.init(data: emojData, encoding: .nonLossyASCII)
4
Ghulam Rasool