Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 通过编程方式将阴影添加到图像中更有效,还是在Swift中已将阴影添加到图像中更有效?_Ios_Swift_Uikit - Fatal编程技术网

Ios 通过编程方式将阴影添加到图像中更有效,还是在Swift中已将阴影添加到图像中更有效?

Ios 通过编程方式将阴影添加到图像中更有效,还是在Swift中已将阴影添加到图像中更有效?,ios,swift,uikit,Ios,Swift,Uikit,我正在加载一个带有6个按钮的视图控制器,这些按钮已经定义了一个预设图像-我很好奇,是使用一个功能将阴影添加到每个项目上更好(更快/更高效),还是让阴影已经出现在图像上,这样当图像分配给按钮时,阴影就已经出现了。现在,按钮在情节提要中设置了图像。事先不可能为图像添加阴影。阴影必须使用倍增混合模式(目标与阴影相乘),但图像的其余部分需要使用alpha混合(目标与图像遮罩的倒数相乘,并添加到图像中,与遮罩相乘) 您可以通过使用部分透明的阴影来模拟这一点,但这是一种不同的颜色: shadow*α+des

我正在加载一个带有6个按钮的视图控制器,这些按钮已经定义了一个预设图像-我很好奇,是使用一个功能将阴影添加到每个项目上更好(更快/更高效),还是让阴影已经出现在图像上,这样当图像分配给按钮时,阴影就已经出现了。现在,按钮在情节提要中设置了图像。

事先不可能为图像添加阴影。阴影必须使用倍增混合模式(目标与阴影相乘),但图像的其余部分需要使用alpha混合(目标与图像遮罩的倒数相乘,并添加到图像中,与遮罩相乘)

您可以通过使用部分透明的阴影来模拟这一点,但这是一种不同的颜色:

shadow*α+destination*(1-α)

而不是

shadow*目的地


如果这看起来足够好,那么是的,它的效率更高。但这在今天(或昨天)的硬件上并不重要。

简而言之:
在需要加载图像时,在图像上添加阴影会更有效,从而节省阴影的额外绘图

上一个似乎不可理解的较长答案:
不需要额外cpu周期的一切都更好。特别是在位图最终占用相同内存量的情况下。如果要为图像加载的数据要大得多,情况就不同了。

这就是为什么watchOS应用程序使用预先计算的图像来制作动画,而不是在运行时绘制动画的原因。

设计师设计了带有阴影的图标(对不起,应该更清晰),例如相机图标上有阴影。但他们建议我使用非阴影图标,并将阴影编程到其上。只是不确定哪种方法更有效。你应该告诉设计师你不能使用预乘alpha混合,这将不允许在阴影中烘焙。那么你是说在视图加载时对阴影进行编程更好?这更像是一种“GPU循环”的情况。不。ViewDidLoad运行一次就可以了,您不需要手动响应动态视图更改。在能量方面,在需要加载的情况下,在图像上添加阴影更有效,从而节省了阴影的额外绘制。那是你的问题。