【问题标题】:Make emoji symbols grayscale in UILabel在 UILabel 中制作 emoji 符号灰度
【发布时间】:2013-03-22 20:39:37
【问题描述】:

我想使用 Apple 的内置表情符号字符(特别是几个表情符号,例如 UILabel 中的 \ue415),但我希望表情符号以灰度呈现。

我希望它们在UILabel 中保留字符(纯文本或属性都可以)。我不是在寻找混合图像/字符串解决方案(我已经有了)。

有谁知道如何做到这一点?

【问题讨论】:

  • 您找到解决方案了吗?
  • @AlexBeals 很遗憾没有。

标签: ios objective-c iphone uilabel emoji


【解决方案1】:

我知道你说过你不是在寻找“混合图像解决方案”,但我一直在追逐这条龙,我能想出的最好结果是混合图像。以防我的解决方案对您的旅程更有帮助,我将其包括在此处。祝你好运!

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!
    }
}

【讨论】:

    猜你喜欢
    • 2016-02-22
    • 1970-01-01
    • 2013-11-17
    • 2016-01-10
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    • 1970-01-01
    • 2019-07-15
    相关资源
    最近更新 更多