是的,你可以做到这一点。看看这个例子可以回答你的问题。
首先,您需要添加一个名为myView的UIView
,并将其附加到一个IBOutlet
伊娃。
定义这个全局值进行演示:
#define POSITION CGPointMake(50.0,50.0)
#define SIZE CGSizeMake(100.0,100.0)
声明两种方法,一种是将绘制形状MyView的和另外一个,将调整视图以使其适应绘制的图形:
-(void) circle
{
CAShapeLayer *layerData = [CAShapeLayer layer];
layerData.fillColor = [UIColor greenColor].CGColor;
UIBezierPath * dataPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0.0, 0.0, SIZE.width, SIZE.height)];
layerData.path = dataPath.CGPath;
layerData.position = CGPointMake(POSITION.x, POSITION.y);
[myView.layer addSublayer:layerData];
}
-(void) resize
{
((CAShapeLayer *)[myView.layer.sublayers objectAtIndex:0]).position = CGPointMake(0.0, 0.0);
myView.frame = CGRectMake(POSITION.x + myView.frame.origin.x , POSITION.y + myView.frame.origin.y, SIZE.width, SIZE.height);
}
最后,在viewWillAppear:
调用两种方法:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self circle];
[self resize];
}
您可以运行相同的代码,只调用圈并调用这两种方法。在这两种情况下,绘制的圆将处于相同的确切位置,但在第二种情况下,myView已被调整为与绘制的形状具有相同的大小。
希望它有帮助。
我想你要找的是[贴在这里](http://stackoverflow.com/questions/13153223/how-to-crop-the-image-using-uibezierpath)检查它,它可能会有所帮助,祝你好运 –