将UIImageView切成自定义形状

时间:2011-08-03 17:41:07

标签: iphone objective-c uiimageview

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

Pie Shape

2 个答案:

答案 0 :(得分:5)

如果除了进度显示之外不需要圆圈图像,则可以跳过UIImageView并使用CoreGraphics绘制进度指示器。基本步骤是:

  1. 创建路径 - CGContextBeginPath
  2. 使用CGContextAddArc
  3. 添加弧线
  4. 使用CGContextFillPath
  5. 填写路径
  6. 关闭路径 - CGContextClosePath
  7. 对每个进度步骤重复此步骤,每次更改弧的终点。

答案 1 :(得分: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);
}

我还没弄清楚如何动态地填充它,虽然我想这很大程度上取决于使用它的特定环境。希望它有任何帮助!欢呼声。