use*_*733 4 iphone animation mask uiimageview
我一直在寻找在iPhone上屏蔽图像的方法.我遇到了这个解决方案
http://iosdevelopertips.com/cocoa/how-to-mask-an-image.html
这对静止图像很有用.我想要做的是在UIImageView中屏蔽动画.从我所看到的,我不认为这是可能的,同时也实现了不错的帧速率.
这让我想问以下是否可能,我可以"剪辑"UIImageView中的图像吗?即不重新调整UIImageView的大小到图像的大小,所以一些部分被砍掉?
我没有尝试过这个性能,但你可以使用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)
请记住,这实际上并不像您引用的链接那样创建新图像.这只会创建一个遮罩,用于在图像视图的顶部显示 - 这可能不是您想要的.
我搜索得很高,最后找到了一个几乎没有任何限制的解决方案.所以,你走了:
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.
希望这有帮助.干杯,迪伦.
| 归档时间: |
|
| 查看次数: |
4968 次 |
| 最近记录: |