2011-08-03 26 views
1

我有一个包含圆形图像的UIImageView。我希望能够删除图像的一部分(同时保持透明度),以创建如下所示的切片缺失的效果。我的最终目标是创建类似iTunes的应用程序,当您播放歌曲预览时,该圆圈会顺时针方向缓慢填充。将UIImageView切成自定义形状

Pie Shape

回答

5

如果您不需要圆比进度显示任何其他的形象,你可以跳过UIImageView,只需使用CoreGraphics中绘制进度指示器。基本步骤是:

  1. 创建路径 - CGContextBeginPath
  2. 添加使用CGContextAddArc
  3. 填写使用CGContextFillPath
  4. 关闭路径的路径弧 - CGContextClosePath

重复此每个进展步骤,每次更改弧的终点。

2

我已经实现了一个类似的填充式循环用下面的代码: (委托提供0之间的值和1)

- (void)drawRect:(CGRect)rect 
{ 
CGFloat endAngle=([self.delegate giveCompletion]+0.75)*2*M_PI; 

UIBezierPath *path=[UIBezierPath bezierPathWithArcCenter:self.center radius:self.bounds.size.width/(3) startAngle:0.75*2*M_PI endAngle:endAngle clockwise:YES]; 
[path addLineToPoint:self.center]; 
[path addLineToPoint:CGPointMake(self.center.x, self.center.y+self.bounds.size.width/(3)) ]; 
[path addClip]; 
[[UIColor blueColor]setFill]; 
UIRectFill(self.bounds); 
} 

我还没有想出如何动态地使其填满虽然我猜这将在很大程度上取决于它使用的具体环境。希望它有任何帮助!干杯。

+0

非常棒的这段代码很棒!顺便说一句[self setNeedsDisplay]将导致视图重绘。 – AlBeebe