我在iPad应用程序有一个形象,我基本上要放在它上面的彩色滤光片。 为此,我有一个屏蔽为一定的形状,我把图片上,颜色的UIView。 由于调整阿尔法不给我,我想使用混合模式,而不是预期的效果。
据我所知,你只能使用上的图像混合模式,而不是简单的看法。 视图的颜色是动态的,所以我不能只用一张图片来代替。
我也试过栅格化视图的图像,但得到了所有pixely和奇数或东西,但也许我做错了什么。
因此,基本的问题是:是否有可能应用混合模式的看法? 或者我应该采取完全不同的方法来达到同样的目的?
我在iPad应用程序有一个形象,我基本上要放在它上面的彩色滤光片。 为此,我有一个屏蔽为一定的形状,我把图片上,颜色的UIView。 由于调整阿尔法不给我,我想使用混合模式,而不是预期的效果。
据我所知,你只能使用上的图像混合模式,而不是简单的看法。 视图的颜色是动态的,所以我不能只用一张图片来代替。
我也试过栅格化视图的图像,但得到了所有pixely和奇数或东西,但也许我做错了什么。
因此,基本的问题是:是否有可能应用混合模式的看法? 或者我应该采取完全不同的方法来达到同样的目的?
看看的文档进行的CALayer的compositingFilter: https://developer.apple.com/documentation/quartzcore/calayer/1410748-compositingfilter
在你的颜色叠加查看您可以设置view.layer.compositingFilter
到CICategoryCompositeOperation实现与它后面的内容混合。 这是应用了乘法混合模式的一些示例代码操场测试它(更换UIImage(named: "")
以测试自己的图像)
import UIKit
import PlaygroundSupport
class MyViewController : UIViewController {
override func loadView() {
let mainView = UIView()
self.view = mainView
let image = UIImageView()
image.translatesAutoresizingMaskIntoConstraints = false;
image.image = UIImage(named: "maxresdefault.jpg")
mainView.addSubview(image)
let overlay = UIView()
overlay.translatesAutoresizingMaskIntoConstraints = false;
overlay.backgroundColor = .red
overlay.layer.compositingFilter = "multiplyBlendMode"
mainView.addSubview(overlay)
mainView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-0-[subview]-0-|", options: .directionLeadingToTrailing, metrics: nil, views: ["subview": view]))
mainView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-0-[subview]-0-|", options: .directionLeadingToTrailing, metrics: nil, views: ["subview": view]))
mainView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-0-[subview]-0-|", options: .directionLeadingToTrailing, metrics: nil, views: ["subview": overlay]))
mainView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-0-[subview]-0-|", options: .directionLeadingToTrailing, metrics: nil, views: ["subview": overlay]))
}
}
PlaygroundPage.current.liveView = MyViewController()