我正在尝试仅绘制UIImage
的自定义部分(即:我想显示 UIImage
用户触摸的部分)我正在拥有使用mask
的{{1}}属性获得合理的结果。
我layer
上的这样的事情:
UIView
然后,在UIBezierPath *maskPath = [UIBezierPath bezierPath];
[maskPath setLineWidth:10.0];
[maskPath moveToPoint:CGPointMake(10.0, 10.0)];
[maskPath addLineToPoint:CGPointMake(100.0, 100.0)];
CAShapeLayer *shapeMaskLayer = [CAShapeLayer layer];
shapeMaskLayer.path = maskPath.CGPath;
[self.layer setMask:shapeMaskLayer];
:
drawRect
有效。我只看到- (void)drawRect:(CGRect)rect
{
[img drawInRect:rect];
}
定义的图像部分。
但是,看起来这不是解决此问题的最佳方式。所以我的问题是:在iOS SDK中绘制图像的自定义部分(可能是任何形状)的最佳方法是什么?。
答案 0 :(得分:4)
您可以尝试的一件事就是剪切而不是创建额外的图层。 e.g。
- (void)drawRect:(CGRect)rect
{
CGContextRef ctx = UIGraphicsGetCurrentContext();
UIBezierPath *maskPath = [UIBezierPath bezierPath];
[maskPath setLineWidth:10.0];
[maskPath moveToPoint:CGPointMake(10.0, 10.0)];
[maskPath addLineToPoint:CGPointMake(100.0, 100.0)];
CGContextAddPath(ctx, maskPath.CGPath);
CGContextClip(ctx)
[img drawInRect:rect];
}