【问题标题】:Mask a view in Objective-C在 Objective-C 中屏蔽视图
【发布时间】:2012-07-15 04:42:37
【问题描述】:

ActionScript 3 中,我们可以像这样对可视对象应用蒙版:

SomeVisualObject.mask = maskShapeObject; 

如何在 Objective-C 中获得类似的结果?假设我有两个 UIImageView 对象,我想要这样的东西:

imageView1.mask = imageView2;

我如何使用UIImageView 来遮盖或剪裁另一个的形状?

【问题讨论】:

  • 阅读绘制 UIImage 对象时可用的合成操作。听起来你想要“源over”模式。

标签: ios objective-c uiimageview mask


【解决方案1】:
CALayer *maskLayer = [CALayer layer];
 UIImage *maskImage = [UIImage imageNamed:@"maskImage.png"];
maskLayer.contents = (id)maskImage.CGImage;
maskLayer.bounds = (CGRect){CGPointZero, maskImage.size};

UIImageView *imageViewToMask = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)];
imageViewToMask.image = [UIImage imageNamed:@"image2.png"];
imageViewToMask.layer.mask = maskLayer;

【讨论】:

  • 它几乎可以工作,但似乎掩码已定位到图像的左上角,位置为 (-halfmaskwidth, -halfmaskheight)。
  • ... 事实证明它适用于 frame,不适用于 bounds
  • @DanyalAytekin =) HTH
猜你喜欢
  • 2011-06-27
  • 2017-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多