Ios 通过编程方式将阴影添加到图像中更有效,还是在Swift中已将阴影添加到图像中更有效?
我正在加载一个带有6个按钮的视图控制器,这些按钮已经定义了一个预设图像-我很好奇,是使用一个功能将阴影添加到每个项目上更好(更快/更高效),还是让阴影已经出现在图像上,这样当图像分配给按钮时,阴影就已经出现了。现在,按钮在情节提要中设置了图像。事先不可能为图像添加阴影。阴影必须使用倍增混合模式(目标与阴影相乘),但图像的其余部分需要使用alpha混合(目标与图像遮罩的倒数相乘,并添加到图像中,与遮罩相乘) 您可以通过使用部分透明的阴影来模拟这一点,但这是一种不同的颜色:Ios 通过编程方式将阴影添加到图像中更有效,还是在Swift中已将阴影添加到图像中更有效?,ios,swift,uikit,Ios,Swift,Uikit,我正在加载一个带有6个按钮的视图控制器,这些按钮已经定义了一个预设图像-我很好奇,是使用一个功能将阴影添加到每个项目上更好(更快/更高效),还是让阴影已经出现在图像上,这样当图像分配给按钮时,阴影就已经出现了。现在,按钮在情节提要中设置了图像。事先不可能为图像添加阴影。阴影必须使用倍增混合模式(目标与阴影相乘),但图像的其余部分需要使用alpha混合(目标与图像遮罩的倒数相乘,并添加到图像中,与遮罩相乘) 您可以通过使用部分透明的阴影来模拟这一点,但这是一种不同的颜色: shadow*α+des
shadow*α+destination*(1-α)
而不是
shadow*目的地
如果这看起来足够好,那么是的,它的效率更高。但这在今天(或昨天)的硬件上并不重要。简而言之:
在需要加载图像时,在图像上添加阴影会更有效,从而节省阴影的额外绘图 上一个似乎不可理解的较长答案:
不需要额外cpu周期的一切都更好。特别是在位图最终占用相同内存量的情况下。如果要为图像加载的数据要大得多,情况就不同了。
这就是为什么watchOS应用程序使用预先计算的图像来制作动画,而不是在运行时绘制动画的原因。设计师设计了带有阴影的图标(对不起,应该更清晰),例如相机图标上有阴影。但他们建议我使用非阴影图标,并将阴影编程到其上。只是不确定哪种方法更有效。你应该告诉设计师你不能使用预乘alpha混合,这将不允许在阴影中烘焙。那么你是说在视图加载时对阴影进行编程更好?这更像是一种“GPU循环”的情况。不。ViewDidLoad运行一次就可以了,您不需要手动响应动态视图更改。在能量方面,在需要加载的情况下,在图像上添加阴影更有效,从而节省了阴影的额外绘制。那是你的问题。