2015-07-06 7 views
0

То, что я пытаюсь сделать, это конвертировать 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(), потому что мне сказали, что это гораздо более высокую производительность мудрым. Независимо от того, оба способа заканчиваются тем же результатом. Значок остается неизменным (он сохраняет свой сплошной белый фон). Что я делаю не так?

ответ

0

Вы можете попробовать применить другой режим рендеринга для изображения кнопки.

cogButton.setBackgroundImage(UIImage(named:"Cog")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate), forState: .Normal) 
+0

К сожалению, это просто результат в [это] (http://i.imgur.com/i2rEPFG.png) :(Спасибо за попытку. – Nexuist