我想知道是否有可能有一个未触动过的动画的UIButton?
不确定这是否完全合理。我有一个UIButton,我通过IB放在我的XIB上。我正在使用带有我自己的75x75图像的Custom类型来控制状态默认值。当用户触摸按钮时,我没有设置自定义图像,因此它只会变暗,这很好。
然而,当没有触摸按钮时,我希望它能够在两个或三个不同的自定义图像之间进行动画处理,使其在外边缘周围产生“发光”效果。这可能吗?
答案 0 :(得分:4)
您可能需要转到核心动画层。 UIButton图层的阴影属性是可动画的,因此您可以创建重复的CABasicAnimation我更改阴影颜色/大小并将其添加到图层。以下代码对我有用。
button.layer.shadowPath = [[UIBezierPath bezierPathWithRect:CGRectInset(button.bounds, -3, -3)] CGPath];
button.layer.shadowColor = [[UIColor whiteColor] CGColor];
button.layer.shadowOpacity = 1.0f;
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"shadowColor"];
animation.fromValue = (id)[[UIColor darkGrayColor] CGColor];
animation.toValue = (id)[[UIColor lightGrayColor] CGColor];
animation.duration = 1.0f;
animation.autoreverses = YES;
animation.repeatCount = NSIntegerMax;
[button.layer addAnimation:animation forKey:@"shadow"];
并将这些方法附加到按钮的控制事件中。
-(IBAction)userDidTouchDown:(UIButton *)sender
{
[button.layer removeAnimationForKey:@"shadow"];
}
-(IBAction)userDidTouchUp:(UIButton *)sender
{
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"shadowColor"];
animation.fromValue = (id)[[UIColor darkGrayColor] CGColor];
animation.toValue = (id)[[UIColor lightGrayColor] CGColor];
animation.duration = 1.0f;
animation.autoreverses = YES;
animation.repeatCount = NSIntegerMax;
[button.layer addAnimation:animation forKey:@"shadow"];
}
您可以使用阴影值(尤其是路径)来使其适合您。不要忘记附上userDidTouchUp:内部修饰和外部活动。
答案 1 :(得分:-1)
您需要拥有自定义视图,因为UIButton无法进行动画制作。 UIView为整个框架有两个子视图: 底部的按钮,顶部的uiimageview。
您可以将uiimageview的animationImages属性设置为您的帧。 根据需要隐藏/显示uiimageview。