在两个 UIView 之间应用混合模式的最简单/最快的方法

Posted

技术标签:

【中文标题】在两个 UIView 之间应用混合模式的最简单/最快的方法【英文标题】:Easiest/fastest way to apply a blend mode between two UIViews 【发布时间】:2009-09-03 04:20:17 【问题描述】:

我正在尝试快速反转现有 UIView 的颜色(变成负片,如摄影负片)。或者取颜色并调低饱和度。我认为比操作位图更容易的是采用另一个全白(或阴影)的 UIView,并使用混合模式来实现我的目标。

我没有看到一种方法来指导如何将 UIView 绘制在另一个之上。即使我将 UIView 子类化,我也看不到使用更多混合来绘制矩形的简单方法。看起来我将不得不继承具有 drawrect:withBlendMode 的 UIImageView。

有没有人以更简单的方式做到这一点?我希望我可以在 UIView 或 UIImageView 上设置一个 blendmode 属性,而不必子类化......

基本上,您将如何快速反转视图以使黑色为白色,白色为黑色?

【问题讨论】:

嗨@mahboudz,你找到更好的方法了吗?或者你还在用这种方式?谢谢! 【参考方案1】:

这似乎是解决方案:

创建一个 UIView 的子类。然后在drawRect中:

    [self.image drawInRect:rect];

    // prepare the context to draw into
    CGContextRef context = UIGraphicsGetCurrentContext();

    // set the blend mode
    CGContextSetBlendMode(context, kCGBlendModeDifference);

    // now draw the appropriate color over the whole thing
    CGContextFillRect(....);

我现在要去试试这个。

【讨论】:

这真的有效吗?我知道它到处张贴,但它有效吗?

以上是关于在两个 UIView 之间应用混合模式的最简单/最快的方法的主要内容,如果未能解决你的问题,请参考以下文章

在 SQL Server 2008 中区分两个表架构的最简单方法是啥?

在两个 DataFrame 之间获得 delta 的最简单方法

将 UIView (Overlay) 与应用背景混合

查找熊猫中两个日期之间差异的最简单方法

在 2 个 C 程序之间传输数据的最简单方法是啥?

在项目之间共享 React 组件的最简单方法是啥? [关闭]