首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Emoji Picker Ios Swift

Emoji Picker Ios Swift
EN

Stack Overflow用户
提问于 2017-07-07 18:38:23
回答 1查看 3.2K关注 0票数 3

我最近看到一个应用程序,它包含了一个表情选择器,作为对某些事情作出反应的一种方式。我想在我的应用程序中实现一个类似的概念,任何人都知道我如何创建这张照片。我正在考虑使用一个集合视图,让每个单元格都是自己的表情符号。有什么想法或者更好的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-08 07:08:00

若要将表情符号放入collectionView,请执行以下操作:

代码语言:javascript
复制
var emojiList: [[String]] = []
let sectionTitle: [String] = ["Emoticons", "Dingbats", "Transport and map symbols", "Enclosed Characters"]

override func layoutSubviews() {
    super.layoutSubviews()
    fetchEmojis()
}

func fetchEmojis(){

    let emojiRanges = [
        0x1F601...0x1F64F,
        0x2702...0x27B0,
        0x1F680...0x1F6C0,
        0x1F170...0x1F251
    ]

    for range in emojiRanges {
        var array: [String] = []
        for i in range {
            if let unicodeScalar = UnicodeScalar(i){
                array.append(String(describing: unicodeScalar))
            }
        }

        emojiList.append(array)
    }
}


override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath) as! DragCell
    cell.imageView.image = emojiList[indexPath.section][indexPath.item].image()
    return cell
}
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return emojiList[section].count
}

func numberOfSections(in collectionView: UICollectionView) -> Int {
    return emojiList.count
}

此分机如下:

代码语言:javascript
复制
extension String {

    func image() -> UIImage? {
        let size = CGSize(width: 100, height: 100)
        UIGraphicsBeginImageContextWithOptions(size, false, 0);
        UIColor.clear.set()

        let stringBounds = (self as NSString).size(withAttributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 75)])
        let originX = (size.width - stringBounds.width)/2
        let originY = (size.height - stringBounds.height)/2
        print(stringBounds)
        let rect = CGRect(origin: CGPoint(x: originX, y: originY), size: size)
        UIRectFill(rect)

        (self as NSString).draw(in: rect, withAttributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 75)])

        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return image
    }

}

请记住,unicode表情符号范围可能不包括所有的表情符号,您可能需要查找和修改应用程序的范围。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44977646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档