То, что я пытаюсь сделать, это конвертировать this значок с твердым белым фоном в this значок со смешанным фоном.Применение режимов смешивания в Swift
Фон позади значка не очень важен, то, что я пытаюсь достичь, - это эффект, применяемый к значку. Значок был создан с использованием режима смешивания Soft Light
в Photoshop. Я хочу воссоздать это в iOS.
Это код, который я попробовал, вдохновленный this comment:
@IBOutlet weak var cogButton: UIButton!
func applyCogBackground() {
UIGraphicsBeginImageContextWithOptions(cogButton.frame.size, false, 1)
var context = UIGraphicsGetCurrentContext()
view.drawViewHierarchyInRect(cogButton.bounds, afterScreenUpdates: false)
UIImage(named: "Cog")?.drawInRect(cogButton.bounds, blendMode: kCGBlendModeSoftLight, alpha: 1)
var result = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
cogButton.setBackgroundImage(result, forState: .Normal)
}
Я использую drawHierarchyInRect()
вместо CALayer.renderInContext()
, потому что мне сказали, что это гораздо более высокую производительность мудрым. Независимо от того, оба способа заканчиваются тем же результатом. Значок остается неизменным (он сохраняет свой сплошной белый фон). Что я делаю не так?
К сожалению, это просто результат в [это] (http://i.imgur.com/i2rEPFG.png) :(Спасибо за попытку. – Nexuist