【问题标题】:Make view stand out from the surroundings. Border layer with inverse color?使视野从周围环境中脱颖而出。反色边框层?
【发布时间】:2021-06-24 12:27:03
【问题描述】:

我有一个视图(在这种情况下是 Button),它后面/下面的内容可以移动(ScrollView)。该按钮只是纯白色和黑色文本,没有任何边框。当View 后面的内容是白色时,它并没有像我希望的那样突出。 (我可以用黑色边框解决这个问题……但是……)

我的想法是在按钮周围设置一个边框,该边框与它后面的视图(像素)颜色相反。所以边框总是会和背景形成对比,并随着背后的内容不断变化。

我在谷歌上搜索了一下,查看了视觉效果层和一些更复杂的(在我脑海中)图形的东西,我不记得术语了。

如果您知道如何处理此问题,请告诉我。我真的很想看看它会是什么样子。

祝你有美好的一天!

【问题讨论】:

  • 我认为没有办法使用香草 CALayers 生成反色。在 Mac OS 上,您可以将 Core Image 过滤器附加到图层,并且您可能会编写一个过滤器来获得您想要的。

标签: ios swift layer


【解决方案1】:

我认为您不能使用 CALayer 和边框创建使用基于当前图层后面图层的像素颜色的颜色的边框。

我建议做的是在视图的 CALayer 中添加第二个 CALayer,在两个维度上插入 -1(增大 1 个像素。)我们称之为环绕层。然后让surroundLayer的borderColor为白色,视图的layer.borderColor为黑色(或反之亦然)。您可以使surroundLayer的borderColor为50%不透明,这样它只会使下面的像素变亮/变暗而不会完全遮挡它们,那就是足以增加对比度并使视图的边框无论其下的内容如何都显示出来。

我以前用过这种技术,效果很好。

编辑:

查看项目https://github.com/DuncanMC/MaskableImageView.git。该项目演示了使用图像作为遮罩层来隐藏/显示视图的内容。

该项目中的 MaskableView 类绘制了一个圆形“光标”,显示它在何处显示/屏蔽其子视图的内容(示例应用程序中的图像和标签)。光标在中间是黄色的,带有它周围有一个部分透明的黑色外圈。无论被绘制的图像部分的颜色如何,这都会提供良好的对比度。

MaskableView 类具有允许调用者设置用于“光标”圆圈的颜色的属性。

下面我发布了一个带有黄色内圈和外层 1/2 透明黑色圆圈的橡皮擦工具的简短动画。

如果没有外黑圈,黄色内圈往往会迷失在图像的较亮部分。明亮的彩色内圈和部分透明的深色外圈相结合,在任何背景上都很容易看到:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-27
    相关资源
    最近更新 更多