objective-c – 在iOS中使用混合模式堆叠UIViews

objective-c – 在iOS中使用混合模式堆叠UIViews,第1张

概述我有两个不同的UI ImageViews.我想使顶级UIImageView混合使用屏幕混合模式与底部的UIImageView. 我知道CALayer的财产:compositingFilter,我知道它在iOS中不起作用.我已经搜索了很多解决方案,我已经发现如何应用子类UIView并覆盖drawRect. 我已经尝试将drawRect的上下文设置为屏幕混合模式,尽管它仍然正常地绘制每个图像.也许我做 我有两个不同的UI ImageVIEws.我想使顶级UIImageVIEw混合使用屏幕混合模式与底部的UIImageVIEw.

我知道CALayer的财产:compositingFilter,我知道它在iOS中不起作用.我已经搜索了很多解决方案,我已经发现如何应用子类UIVIEw并覆盖drawRect.

我已经尝试将drawRect的上下文设置为屏幕混合模式,尽管它仍然正常地绘制每个图像.也许我做错了事情,或者方法应该是不同的.也许我需要OpenGL或CALayer才能实现这一点.有人可以帮忙吗?

解决方法 不幸的是,没有办法在iOS上的UIVIEws之间进行非复合混合. UIKit不提供功能,您已经注意到,CALayer也无法做到这一点.

一般来说,在UIVIEw中实现-drawRect不会帮助你.您正在绘制一个空的位图 – 它不包含其背后的视图的位,因为这些可能随时更改(任何视图或图层可能都是动画). CA从根本上假定层的内容应该是彼此独立的.

你可以尝试,在-drawRect:

>创建一个图像上下文
>使用 – [CALayer renderInContext:]捕获您的视图中的视图
>从图像上下文创建图像
>将该图像绘制到您的视图中
>设置混合模式并绘制在顶部

但是,这将是缓慢而脆弱的,如果你动画任何意见,将不会奏效.我不会推荐它.

如果你真的需要这样做,你将不得不用OpenGL,where you’ve got more freedom来转换整个场景.

总结

以上是内存溢出为你收集整理的objective-c – 在iOS中使用混合模式堆叠UIViews全部内容,希望文章能够帮你解决objective-c – 在iOS中使用混合模式堆叠UIViews所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1063198.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存