NSImage Overlay/Mask Gradient 像 iOS

Posted

技术标签:

【中文标题】NSImage Overlay/Mask Gradient 像 iOS【英文标题】:NSImage Overlay/Mask Gradient like iOS 【发布时间】:2011-01-27 18:35:00 【问题描述】:

我希望使用 Cocoa/Core Graphics 复制在为 UITabBarItem 设置图像时似乎在 ios 上发生的过程。当标签栏项目被选中时,图像会被渐变覆盖。

例如,

变成……

我不确定我应该做些什么来达到这个效果。看起来图像正在掩盖渐变。任何指向正确方向(或代码!)的指针将不胜感激。

【问题讨论】:

【参考方案1】:

您可以使用带有 Alpha 通道的单色 CGImage(与大多数 iPhone 工具/标签栏图标一样)作为遮罩。基本上,您会在单色图像中使用CGContextClipToMask。然后,您将绘制渐变,然后将其剪裁到蒙版图像。你可能还想看看UMEKit的代码,它在Mac OS X上实现了这个效果(没看具体是怎么做的,大概有几种方法)。

【讨论】:

你知道我实际上在另一个项目中使用了 UMEKit,我什至没有想到去看。感谢您的建议! 最终做了 UMEKit 似乎做的事情。首先,我在 drawRect 方法中绘制渐变,然后像这样在上面合成一个 NSImage - [topWave drawAtPoint:NSMakePoint(0, 0) fromRect:NSMakeRect(0, 0, self.frame.size.width, self.frame.size.height) operation:NSCompositeDestinationAtop fraction:1.0];

以上是关于NSImage Overlay/Mask Gradient 像 iOS的主要内容,如果未能解决你的问题,请参考以下文章

将 SwiftUI 视图转换为 NSImage

NSImage 标准图稿和图标 NSImageNameStatusAvailable

Xcode 操场并初始化 NSImage

我无法使用 imageNamed 但 initWithContentsOfFile 创建 NSImage

SDWebImage源码阅读NSImage+WebCache

Swift NSImage到CGImage