2017-07-07 18 views
-4

最近、特定のものに反応する方法として絵文字ピッカーを組み込んだアプリを見ました。私は私のアプリに同様のコンセプトを実装したかったのですが、誰かがこの写真のように何かを作成できるかを知っています。私はコレクションビューを使用して、各セルを独自の絵文字にすることを考えていました。任意の考えやより良い方法? 、collectionViewに絵文字を入れて、このような操作を行うに絵文字ピッカーイオススウィフト

enter image description here

答えて

2

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 
} 

} ユニコード絵文字範囲が含まれていない可能性があることに注意してくださいすべての絵文字を参照して、アプリの範囲を検索して変更することができます。

+0

NSAttributedStringKeyの未解決の識別子のエラーが発生しました – user6520705

+0

私の答えは速い4で動作します...他のスタックオーバーフローの投稿には他の回答があります – Ali