2017-07-07 3 views
-4

Ich habe kürzlich eine App gesehen, die einen Emoji-Picker integriert hat, um auf bestimmte Dinge zu reagieren. Ich wollte ein ähnliches Konzept in meine App implementieren, jeder weiß, wie ich so etwas wie dieses Foto erstellen kann. Ich dachte daran, eine CollectionView zu verwenden und jede Zelle zu einem eigenen Emoji zu machen. Irgendwelche Gedanken oder bessere Methoden?Emoji Picker Ios Swift

enter image description here

Antwort

2

Um Emojis in eine Collection zu setzen, tun so:

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 
} 

Mit dieser Erweiterung:

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 
} 

} Beachten Sie, dass die Emoji-Unicode-Bereiche enthalten können, alle Emoji und Sie möchten möglicherweise die Bereiche für Ihre App suchen und ändern

+0

Ich erhalte den Fehler des unaufgelösten Identifikators für NSAttributedStringKey – user6520705

+0

Meine Antwort funktioniert in swift 4 ... es gibt andere Antworten auf anderen Stapelüberlaufposten – Ali