我正在尝试仅绘制UIImage
的自定义部分(即:我想显示UIImage
用户触摸的部分),并且通过使用mask
的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];
}
有用。我只是看到
maskPath
定义的图像部分。但是,看起来这不是解决此问题的最佳方法。所以我的问题是:在iOS SDK中仅绘制图像的自定义部分(可以是任何形状)的最佳方法是什么? 。
最佳答案
您可以尝试做的一件事就是简单地裁剪而不是创建额外的图层。例如
- (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];
}