我一直在研究如何在 iPhone 上屏蔽图像。我遇到了这个解决方案
http://iosdevelopertips.com/cocoa/how-to-mask-an-image.html
这对静止图像非常有用。我想要做的是在 UIImageView 中屏蔽动画。从我读过的内容来看,我认为这是不可能的,同时还能实现不错的帧速率。
这让我问以下是否可能,我可以“剪辑” UIImageView 内的图像吗?即不将 UIImageView 的大小重新调整为图像的大小,以便将某些部分切掉?
我一直在研究如何在 iPhone 上屏蔽图像。我遇到了这个解决方案
http://iosdevelopertips.com/cocoa/how-to-mask-an-image.html
这对静止图像非常有用。我想要做的是在 UIImageView 中屏蔽动画。从我读过的内容来看,我认为这是不可能的,同时还能实现不错的帧速率。
这让我问以下是否可能,我可以“剪辑” UIImageView 内的图像吗?即不将 UIImageView 的大小重新调整为图像的大小,以便将某些部分切掉?
我还没有尝试过这个性能,但你可以使用核心动画层作为蒙版。您可以定义要在 CAShapeLayer 中使用的路径并填充形状。然后指定 UIImageView 图层的图层蒙版。就像是:
CGMutablePathRef path = CGPathCreateMutable();
// build the path by adding points
// ...
CAShapeLayer *shapeLayer = [[CAShapeLayer alloc] init];
[shapeLayer setPath:path];
[shapeLayer setFillColor:[[UIColor blackColor] CGColor]];
// Set shape layer bounds and position
// ...
// Set the mask for the image view's layer
[[imageView layer] setMask:shapeLayer];
请记住,这实际上并没有像您引用的链接那样创建新图像。这只是在您的图像视图顶部创建一个显示蒙版——这可能不是您想要的。
我搜索了高低,最终找到了一个几乎没有任何限制的解决方案。所以,给你:
UIImageView *maskeeImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"MaskeeImage.png"]];
[maskeeImage setAnimationRepeatCount:-1];
[maskeeImage setAnimationImages:[[NSArray alloc] initWithObjects:[UIImage imageNamed:@"MaskeeImage1.png"], [UIImage imageNamed:@"MaskeeImage2.png"], [UIImage imageNamed:@"MaskeeImage3.png"], nil]];
[maskeeImage startAnimating];
CALayer *maskeeLayer = [maskeeImage layer];
maskeeLayer = CGRectMake(0, 0, 768, 1004);
[[[self view] layer] addSublayer:maskeeLayer];
UIImage *maskImage = [UIImage imageNamed:@"ImageMask.png"];
CALayer *maskLayer = [CALayer layer];
maskLayer.contents = (id) myImageMask.CGImage;
maskLayer.frame = CGRectMake(0, 0, 768, 1004);
[maskeeLayer setMask:maskLayer];
给你!其实很简单,只要你知道怎么做。我试图展示一些不同的选择;使用 UIImageViews 或 UIImages,动画(也可以用于遮罩)。
总而言之,您基本上必须在视图的 CALayer 上设置 mask 属性。每个 UIView 子类都有一个 CALayer 附加到它,所以你在从哪里获取你的面具或被面具人方面完全不受限制。
希望这有帮助。干杯,迪伦。