2013-04-01 5 views
9

würde Ich mag Apples eingebaute in Emoji-Zeichen zu verwenden (genauer gesagt, einige der smileys, zB \ue415) in einem UILabel, aber ich möchte die Emojis in Graustufen wiedergegeben werden.Make Emoji-Symbole Graustufen in UILabel

I will, dass sie Zeichen in dem UILabel (entweder Klartext oder zugeschrieben ist in Ordnung) bleiben. ich bin nicht für eine Hybrid-Bild/string Lösung suchen (was ich bereits).

Wer weiß, wie dies zu erreichen?

+0

Haben Sie jemals eine Lösung dafür gefunden? –

+0

@AlexBeals leider nicht. – DrewInTheMountains

Antwort

0

Ich weiß, du hast gesagt, du bist nicht auf der Suche nach einem "hybrid im Alter Lösung ", aber ich habe diesen Drachen eine Weile verfolgt und das beste Ergebnis, das ich mir vorstellen konnte, ist ein Hybrid. Nur für den Fall, dass meine Lösung auf Ihrer Reise hilfreicher ist, schließe ich sie hier ein. Viel Glück!

import UIKit 
import QuartzCore 

class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // the target label to apply the effect to 
     let label = UILabel(frame: view.frame) 
     // create label text with empji 
     label.text = " HELLO" 
     label.textAlignment = .center 
     // set to red to further show the greyscale change 
     label.textColor = .red 
     // calls our extension to get an image of the label 
     let image = UIImage.imageWithLabel(label: label) 
     // create a tonal filter 
     let tonalFilter = CIFilter(name: "CIPhotoEffectTonal") 
     // get a CIImage for the filter from the label image 
     let imageToBlur = CIImage(cgImage: image.cgImage!) 
     // set that image as the input for the filter 
     tonalFilter?.setValue(imageToBlur, forKey: kCIInputImageKey) 
     // get the resultant image from the filter 
     let outputImage: CIImage? = tonalFilter?.outputImage 
     // create an image view to show the result 
     let tonalImageView = UIImageView(frame: view.frame) 
     // set the image from the filter into the new view 
     tonalImageView.image = UIImage(ciImage: outputImage ?? CIImage()) 
     // add the view to our hierarchy 
     view.addSubview(tonalImageView) 
    } 
} 

extension UIImage { 
    class func imageWithLabel(label: UILabel) -> UIImage { 
     UIGraphicsBeginImageContextWithOptions(label.bounds.size, false, 0.0) 
     label.layer.render(in: UIGraphicsGetCurrentContext()!) 
     let img = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 
     return img! 
    } 
}