Конвертировать Apple Emoji (String) в UIImage

Мне нужны все яблочные смайлики.
Я могу получить все смайлики и положить их встрока скопировав их с сайтаgetemoji но в моем приложении мне нужны смайлики в правильном порядкекак изображения.

Есть ли хороший способ конвертировать эмодзи, которые я копирую, в строкуUIImage?
Или лучшее решение, чтобы получить все смайлики Apple в правильном порядке?

Ответы на вопрос(4)

Swift 4.2

как у @jonauz, о прозрачном фоне. Так что с этой небольшой модификацией вы получите то же самое, но с чистым цветом фона.

У меня не было представителя, чтобы ответить в комментарии.

import UIKit

extension String {
    func emojiToImage() -> UIImage? {
        let size = CGSize(width: 30, height: 35)
        UIGraphicsBeginImageContextWithOptions(size, false, 0)
        UIColor.clear.set()
        let rect = CGRect(origin: CGPoint(), size: size)
        UIRectFill(CGRect(origin: CGPoint(), size: size))
        (self as NSString).draw(in: rect, withAttributes: [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 30)])
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return image
    }
}

обновленный@Luca Angeletti ответ для Swift 3.0.1

extension String {

    func image() -> UIImage? {
        let size = CGSize(width: 30, height: 35)
        UIGraphicsBeginImageContextWithOptions(size, false, 0);
        UIColor.white.set()
        let rect = CGRect(origin: CGPoint(), size: size)
        UIRectFill(CGRect(origin: CGPoint(), size: size))
        (self as NSString).draw(in: rect, withAttributes: [NSFontAttributeName: UIFont.systemFont(ofSize: 30)])
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return image
    }

}
 Danny18207 дек. 2016 г., 16:47
Решение Вопроса
Обновлено для Swift 4.1

Добавьте это расширение в ваш проект

import UIKit

extension String {
    func image() -> UIImage? {
        let size = CGSize(width: 40, height: 40)
        UIGraphicsBeginImageContextWithOptions(size, false, 0)
        UIColor.white.set()
        let rect = CGRect(origin: .zero, size: size)
        UIRectFill(CGRect(origin: .zero, size: size))
        (self as AnyObject).draw(in: rect, withAttributes: [.font: UIFont.systemFont(ofSize: 40)])
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return image
    }
}

Код выше рисует текущийString в контекст изображения с белым фоновым цветом и, наконец, преобразовать его вUIImage.

Теперь вы можете написать

пример

Приведен список диапазонов, указывающих Unicode-значения символов Emoji

let ranges = [0x1F601...0x1F64F, 0x2702...0x27B0]

Вы можете превратить его в список изображений

let images = ranges
    .flatMap { $0 }
    .compactMap { Unicode.Scalar($0) }
    .map(Character.init)
    .compactMap { String($0).image() }

Результат:

Я не могу гарантировать, что список диапазонов полон, вам нужно искать его самостоятельно

 Nikola.Lukovic07 дек. 2016 г., 16:47
Боже мой, это удивительно
 Jonauz01 мая 2018 г., 16:54
Можно ли сделать фон прозрачным?
 Karol Kulesza01 янв. 2019 г., 11:46
@Jonauz: ты пробовалUIColor.clear.set() вместоUIColor.white.set() ?
 Oleksii Nezhyborets16 янв. 2017 г., 23:23
Но это больше не векторная графика
 Daniel26 июл. 2018 г., 08:52
Установите источник чертежа наCGPoint(x: 2, y: -1) и размер шрифта до 34 и смайлики также будут отцентрированы и вписаться в изображение
 Luca Angeletti07 авг. 2016 г., 20:03
@ Danny182: Пожалуйста, смотрите мое обновление. В следующий раз, пожалуйста, создайте новый вопрос, если у вас есть больше запросов.
 Danny18207 авг. 2016 г., 12:47
Я обновил вопрос. Вы можете мне помочь? @appzYourLife
 Danny18207 авг. 2016 г., 22:29
с диапазонами не будет работать, потому что они будут все смешаны (у новых странный юникод). У меня есть все смайлики в массиве [String] @appzYourLife
 juniorRubyist18 июл. 2019 г., 20:20
Для изображения 128 × 128 я использовал шрифт 120pt с источником вCGPoint(x: 0, y: -5).

То же самое для Swift 4:

extension String {
    func emojiToImage() -> UIImage? {
        let size = CGSize(width: 30, height: 35)
        UIGraphicsBeginImageContextWithOptions(size, false, 0)
        UIColor.white.set()
        let rect = CGRect(origin: CGPoint(), size: size)
        UIRectFill(rect)
        (self as NSString).draw(in: rect, withAttributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 30)])
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return image
    }
}

Ваш ответ на вопрос