我已经将UIButton
子类化,使按钮形状显示为甜甜圈(中间有透明孔的圆圈)
drawRect
是:
- (void)drawRect:(CGRect)rect
{
[super drawRect:rect];
if(context==nil)
context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);
CGContextSetStrokeColorWithColor(context, [UIColor colorWithRed:0 green:1.0 blue:0 alpha:0.5].CGColor);
CGMutablePathRef path = CGPathCreateMutable();
CGContextSetLineWidth(context, self.frame.size.width/2 - innerRadius);
CGPathAddArc(path, NULL, self.frame.size.width/2.0, self.frame.size.height/2.0, (innerRadius+((self.frame.size.width/2 - innerRadius)/2.0)), 0 * 3.142/180, 2.1 *3.14, 0);
CGContextAddPath(context, path);
CGContextStrokePath(context);
CGPathRelease(path);
}
当点击按钮时,我希望内孔逐渐收缩,最后消失,留下整个圆圈。
innerRadius
控制内孔的大小,所以我使用以下函数来尝试实现我想要的东西:
- (void) animateButton
{
innerRadius = 0;
[UIView transitionWithView:self duration:0.5
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^{
[self.layer displayIfNeeded];
} completion:nil];
}
这可行,但不是我想要的。这个洞在0.5秒内消失。我希望它逐渐缩小然后消失。如何使用核心动画实现这一目标?