SwiftUI - BlendMode

在SwiftUI中,BlendMode是一个枚举,它定义了不同的混合模式,这些模式决定了如何将一个视图的内容与其背景或其他视图的内容进行混合。每种混合模式都产生不同的视觉效果,允许开发者创建各种独特的界面和动画效果。

BlendMode的主要枚举值及其意义如下:

  • .normal:
    这是默认的混合模式。在此模式下,源颜色(即视图的颜色)将直接覆盖目标颜色(即背景或其他视图的颜色)。没有特殊的混合效果。
  • .multiply:
    此模式将源颜色与目标颜色相乘。结果颜色通常比源颜色和目标颜色都要暗。这种模式常用于创建阴影或加深颜色。
  • .screen:
    此模式将源颜色与目标颜色相加,然后减去它们的乘积。结果颜色通常比源颜色和目标颜色都要亮。这种模式常用于创建亮光或高亮效果。
  • .overlay:
    此模式根据目标颜色的亮度来混合源颜色。如果目标颜色较暗,则使用类似于multiply的模式;如果目标颜色较亮,则使用类似于screen的模式。这种模式可以在暗色和亮色之间创建平滑的过渡。
  • .darken:
    此模式选择源颜色和目标颜色中较暗的一个。如果源颜色比目标颜色暗,则使用源颜色;否则,使用目标颜色。
  • .lighten:
    此模式选择源颜色和目标颜色中较亮的一个。如果源颜色比目标颜色亮,则使用源颜色;否则,使用目标颜色。
  • .colorDodge:
    此模式通过增加目标颜色的亮度来反映源颜色。源颜色越亮,目标颜色的亮度增加越多。这种模式常用于创建高光和亮光效果。
  • .colorBurn:
    此模式通过降低目标颜色的亮度来反映源颜色。源颜色越暗,目标颜色的亮度降低越多。这种模式常用于创建阴影和加深颜色效果。
  • .hardLight:
    此模式根据源颜色的亮度来混合颜色。如果源颜色比50%的灰色亮,则使用类似于screen的模式;如果源颜色比50%的灰色暗,则使用类似于multiply的模式。这种模式可以在暗色和亮色之间创建强烈的对比效果。
  • .softLight:
    此模式类似于hardLight,但产生的对比效果较为柔和。它根据源颜色的亮度和饱和度来调整目标颜色的亮度和饱和度,从而创建出更加自然的混合效果。
  • .difference:
    此模式从目标颜色中减去源颜色,或者从源颜色中减去目标颜色(取决于哪个颜色的亮度更高)。结果颜色表示两种颜色之间的差异。这种模式常用于创建独特的视觉效果和动画效果。
  • .exclusion:
    此模式类似于difference,但产生的结果更加柔和和自然。它根据源颜色和目标颜色的差异来创建一种独特的混合效果,同时保留了一些原始颜色的特征。
  • .hue:
    此模式使用源颜色的色相和目标颜色的饱和度及亮度来创建结果颜色。这种模式常用于改变图像的色相而不改变其亮度和饱和度。
  • .saturation:
    此模式使用源颜色的饱和度和目标颜色的色相及亮度来创建结果颜色。这种模式常用于改变图像的饱和度而不改变其色相和亮度。
  • .color:
    此模式使用源颜色的色相和饱和度以及目标颜色的亮度来创建结果颜色。这是一种常用的颜色混合模式,可以保留原始颜色的某些特征同时添加新的颜色信息。
  • .luminosity:
    此模式使用源颜色的亮度和目标颜色的色相及饱和度来创建结果颜色。这种模式常用于改变图像的亮度而不改变其色相和饱和度。
  • sourceAtop:
    此模式将源颜色绘制在目标颜色的上方,但仅当源颜色与目标颜色重叠时才会显示源颜色。如果源颜色与目标颜色不重叠,则不会显示任何内容。这类似于将一张半透明的纸放在另一张纸上,只有重叠的部分才会显示上面的纸的颜色。
  • destinationOver:
    此模式将目标颜色绘制在源颜色的上方。这与正常的绘图顺序相反,通常我们是将源颜色绘制在目标颜色的上方。这种模式可以用于创建一些特殊的视觉效果,例如模拟反光或倒影。
  • destinationOut:
    此模式将显示源颜色之外的目标颜色。换句话说,它会显示目标颜色中与源颜色不重叠的部分。这可以用于创建遮罩效果,其中源颜色定义了一个形状或区域,而该形状或区域之外的目标颜色则显示出来。
  • plusDarker:
    此模式将源颜色和目标颜色相加,但结果颜色将比两者中的较暗颜色还要暗。如果源颜色和目标颜色中的任何一个已经很暗了,那么结果颜色将非常接近黑色。这种模式可以用于加深颜色或创建阴影效果。
  • plusLighter:
    此模式将源颜色和目标颜色相加,产生更亮的结果。与plusDarker相反,它会使颜色变亮而不是变暗。如果源颜色和目标颜色都很亮,那么结果颜色将非常接近白色。这种模式可以用于创建高光或亮光效果。

在SwiftUI中使用BlendMode时,你可以将其作为视图修饰符的参数传递给相应的函数或方法。例如,你可以使用blendMode(.overlay)来将当前视图的内容与其背景或其他视图的内容以覆盖模式进行混合。这将产生一种独特的视觉效果,使你的界面更加生动和有趣。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,919评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,567评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,316评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,294评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,318评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,245评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,120评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,964评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,376评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,592评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,764评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,460评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,070评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,697评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,846评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,819评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,665评论 2 354

推荐阅读更多精彩内容