如何屏蔽UIImageView?我试图用这样的东西掩盖图像:你能帮帮我吗?我正在使用此代码:- (void) viewDidLoad {
UIImage *OrigImage = [UIImage imageNamed:@"dogs.png"];
UIImage *mask = [UIImage imageNamed:@"mask.png"];
UIImage *maskedImage = [self maskImage:OrigImage withMask:mask];
myUIIMage.image = maskedImage;}
3 回答
犯罪嫌疑人X
TA贡献2080条经验 获得超4个赞
有一种更简单的方法。
#import <QuartzCore/QuartzCore.h>// remember to include Framework as wellCALayer *mask = [CALayer layer];mask.contents = (id)[[UIImage imageNamed:@"mask.png"] CGImage];mask.frame = CGRectMake(0, 0, <img_width>, <img_height>);yourImageView.layer.mask = mask;yourImageView.layer.masksToBounds = YES;
对于Swift 4和plus,请遵循以下代码
let mask = CALayer()mask.contents = [ UIImage(named: "right_challenge_bg")?.cgImage] as Anymask.frame = CGRect(x: 0, y: 0, width: leftBGImage.frame.size.width, height: leftBGImage.frame.size.height)leftBGImage.layer.mask = mask leftBGImage.layer.masksToBounds = true
慕妹3242003
TA贡献1824条经验 获得超6个赞
本教程使用此方法有两个参数:image
并且maskImage
,您必须在调用方法时进行设置。示例调用可能看起来像这样,假设方法在同一个类中并且图片在您的包中:
注意 - 令人惊讶的是,图像甚至不必具有相同的大小。
...UIImage *image = [UIImage imageNamed:@"dogs.png"];UIImage *mask = [UIImage imageNamed:@"mask.png"];// result of the masking methodUIImage *maskedImage = [self maskImage:image withMask:mask];...- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage { CGImageRef maskRef = maskImage.CGImage; CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef), CGImageGetHeight(maskRef), CGImageGetBitsPerComponent(maskRef), CGImageGetBitsPerPixel(maskRef), CGImageGetBytesPerRow(maskRef), CGImageGetDataProvider(maskRef), NULL, false); CGImageRef maskedImageRef = CGImageCreateWithMask([image CGImage], mask); UIImage *maskedImage = [UIImage imageWithCGImage:maskedImageRef]; CGImageRelease(mask); CGImageRelease(maskedImageRef); // returns new image with mask applied return maskedImage;}
在您提供代码后,我添加了一些数字作为注释,以供参考。你还有两个选择。整个事情是一种方法,你在某处调用。您不需要在其中创建图像:这会将方法的可重用性降低到零。
让代码正常工作 将方法头(1.)更改为
- (UIImage *)maskImageMyImages {
然后,在改变变量名2至
UIImage *maskImage = [UIImage imageNamed:@"mask.png"];
该方法将返回您的蒙版图像,因此您必须在某个地方调用此方法。你能告诉我们你调用方法的代码吗?
- 3 回答
- 0 关注
- 475 浏览
添加回答
举报
0/150
提交
取消