如何为 UIControl/UIButton 动画从一种状态到另一种状态的过渡? [复制]
Posted
技术标签:
【中文标题】如何为 UIControl/UIButton 动画从一种状态到另一种状态的过渡? [复制]【英文标题】:How to animate transition from one state to another for UIControl/UIButton? [duplicate] 【发布时间】:2013-03-06 02:36:11 【问题描述】:我有一个 UIButton 可以在突出显示时更改图像。从 UIControlStateHighlight 过渡到 UIControlStateNormal 时,我希望突出显示的图像慢慢淡入正常图像。是否有捷径可寻?
【问题讨论】:
【参考方案1】:我最终继承了 UIButton。这是实现文件代码。我取出了一些特定于应用程序的东西,所以我没有测试过这个确切的代码,但应该没问题:
#import "SlowFadeButton.h"
@interface SlowFadeButton ()
@property(strong, nonatomic)UIImageView *glowOverlayImgView; // Used to overlay glowing animal image and fade out
@end
@implementation SlowFadeButton
-(id)initWithFrame:(CGRect)theFrame mainImg:(UIImage*)theMainImg highlightImg:(UIImage*)theHighlightImg
if((self = [SlowFadeButton buttonWithType:UIButtonTypeCustom]))
self.frame = theFrame;
if(!theMainImg)
NSLog(@"Problem loading the main image\n");
else if(!theHighlightImg)
NSLog(@"Problem loading the highlight image\n");
[self setImage:theMainImg forState:UIControlStateNormal];
self.glowOverlayImgView = [[UIImageView alloc] initWithImage:theHighlightImg];
self.glowOverlayImgView.frame = self.imageView.frame;
self.glowOverlayImgView.bounds = self.imageView.bounds;
self.adjustsImageWhenHighlighted = NO;
return self;
-(void)setHighlighted:(BOOL)highlighted
// Check if button is going from not highlighted to highlighted
if(![self isHighlighted] && highlighted)
self.glowOverlayImgView.alpha = 1;
[self addSubview:self.glowOverlayImgView];
// Check if button is going from highlighted to not highlighted
else if([self isHighlighted] && !highlighted)
[UIView animateWithDuration:1.0f
animations:^
self.glowOverlayImgView.alpha = 0;
completion:NULL];
[super setHighlighted:highlighted];
-(void)setGlowOverlayImgView:(UIImageView *)glowOverlayImgView
if(glowOverlayImgView != _glowOverlayImgView)
_glowOverlayImgView = glowOverlayImgView;
self.glowOverlayImgView.alpha = 0;
@end
您也可以从[self imageForState:UIControlStateHighlighted]
中提取突出显示的图像并使用它,它应该可以正常工作。主要是确定adjustsImageWhenHighlighted = NO
,然后覆盖setHighlighted:
方法。
【讨论】:
以上是关于如何为 UIControl/UIButton 动画从一种状态到另一种状态的过渡? [复制]的主要内容,如果未能解决你的问题,请参考以下文章