表情符号select器Ios Swift

我最近看到一个应用程序,它包含了一个表情符号select器,用来对某些事情做出反应。 我想实现一个类似的概念到我的应用程序,任何人都知道我可以创build这样的照片。 我正在考虑使用collectionview,并将每个单元格作为自己的表情符号。 任何想法或更好的方法?

在这里输入图像说明

为了把emojis放入一个collectionView中,请这样做:

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 } 

有了这个扩展:

 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表情符号范围可能不包含所有的表情符号,您可能需要查找和修改您的应用程序的范围