"掩盖"动画?iPhone SDK

use*_*733 4 iphone animation mask uiimageview

我一直在寻找在iPhone上屏蔽图像的方法.我遇到了这个解决方案

http://iosdevelopertips.com/cocoa/how-to-mask-an-image.html

这对静止图像很有用.我想要做的是在UIImageView中屏蔽动画.从我所看到的,我不认为这是可能的,同时也实现了不错的帧速率.

这让我想问以下是否可能,我可以"剪辑"UIImageView中的图像吗?即不重新调整UIImageView的大小到图像的大小,所以一些部分被砍掉?

Mat*_*ong 8

我没有尝试过这个性能,但你可以使用Core Animation层作为掩码.您可以定义要在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];
Run Code Online (Sandbox Code Playgroud)

请记住,这实际上并不像您引用的链接那样创建新图像.这只会创建一个遮罩,用于在图像视图的顶部显示 - 这可能不是您想要的.


Dyl*_*o42 5

我搜索得很高,最后找到了一个几乎没有任何限制的解决方案.所以,你走了:

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];
Run Code Online (Sandbox Code Playgroud)

你去!一旦你知道如何,这真的很容易.我试图展示一些不同的选择; 使用UIImageViews或UIImages,动画(也可用于蒙版).

总结一下,你基本上必须在视图的CALayer上设置mask属性.每个UIView子类都附有一个CALayer,所以你不需要限制你从哪里获得你的面具或maskee.

希望这有帮助.干杯,迪伦.