如何制作非矩形形状的图像
Posted
技术标签:
【中文标题】如何制作非矩形形状的图像【英文标题】:How To make image of nonRectangular shape 【发布时间】:2012-07-05 10:55:59 【问题描述】:我在创建不规则形状的图像时遇到问题。这是我的框架示例。
请提供任何想法来创建这样的图像。它包含两个不同帧中的两个图像。但是这两张图片在装入框架后都隐藏了一部分。
【问题讨论】:
解决方案是你必须将图像框架作为图像,中心透明,并将实际图像放在后面 【参考方案1】:您必须创建遮罩图像,以遮盖原始图像的一部分。 试试看How to Mask an UIImageView 可能会有所帮助...
【讨论】:
不,你没有得到我的问题。当我触摸或缩放图像时,这两个图像都是实际大小,即矩形形状。只有图像的视图就像是某些东西隐藏了图像的一部分。【参考方案2】:你可以使用面具:
- (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 masked = CGImageCreateWithMask([image CGImage], mask);
return [UIImage imageWithCGImage:masked];
图像是您的原始图像。
maskImage 是黑白图像。如果 maskImage 为黑色,则将显示您的原始图像。
【讨论】:
不,你没有得到我的问题。当我触摸或缩放图像时,这两个图像都是实际大小,即矩形形状。仅查看图像就像隐藏了图像的一部分【参考方案3】:你需要有边框的图像来掩盖你的 imagview 的图像。现在这样做:
#import <QuartzCore/QuartzCore.h>
// remember to include Framework as well
CALayer *mask = [CALayer layer];
mask.contents = (id)[[UIImage imageNamed:@"bordered_image_mask.png"] CGImage]; // here bordered image
mask.frame = CGRectMake(5, 5, <img_width>, <img_height>); // here x and y is 5 to show white boder around like in image
yourImageView.layer.mask = mask;
yourImageView.layer.masksToBounds = YES;
【讨论】:
图像添加到滚动视图上,所以第一次显示是这样的。但实际上当我触摸或滑动时,这是矩形的!以上是关于如何制作非矩形形状的图像的主要内容,如果未能解决你的问题,请参考以下文章