在 Swift 中应用混合模式
Posted
技术标签:
【中文标题】在 Swift 中应用混合模式【英文标题】:Applying Blend Modes in Swift 【发布时间】:2015-07-06 09:10:16 【问题描述】:我要做的是将纯白色背景的this 图标转换为混合背景的this 图标。
图标背后的背景并不重要,我想要实现的是应用于图标的效果。该图标是使用 Photoshop 中的Soft Light
混合模式创建的。我想在 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()
,因为有人告诉我它的性能要快得多。无论如何,任何一种方式最终都会得到相同的结果。图标未更改(它保留其纯白色背景)。我做错了什么?
【问题讨论】:
【参考方案1】:您可以尝试为按钮的图像应用不同的渲染模式。
cogButton.setBackgroundImage(UIImage(named:"Cog")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate), forState: .Normal)
【讨论】:
不幸的是,这只会导致this :( 谢谢你的尝试。以上是关于在 Swift 中应用混合模式的主要内容,如果未能解决你的问题,请参考以下文章
FlutterFlutter 混合开发 ( Dart 代码调试 | Flutter 单独调试 | 混合模式下 Flutter 调试 )