动画 UIButton 状态以在点击时淡入和淡出
Posted
技术标签:
【中文标题】动画 UIButton 状态以在点击时淡入和淡出【英文标题】:Animate UIButton state to fade in and fade out on tap 【发布时间】:2014-03-20 18:06:49 【问题描述】:我希望UIbutton
在被点击时淡入其突出显示状态,然后在用户将手指从按钮上移开时淡出。我尝试使用transitionWithView
执行此操作,但这仅适用于当用户移开手指时淡出突出显示状态。
这是我的代码。谢谢。
[UIView transitionWithView:view duration:.2 options:UIViewAnimationOptionTransitionCrossDissolve | UIViewAnimationOptionAllowUserInteraction animations:nil completion:nil];
【问题讨论】:
【参考方案1】:首先创建一个新的 UIButton 子类,在我的示例中我称之为“MyButton”。
并使用:
touchesBegan
touchesEnded
touchesMove
为了实现您正在寻找的褪色效果,如下所示:
#import <UIKit/UIKit.h>
@interface MyButton : UIButton
@end
#import "MyButton.h"
@implementation MyButton
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
[UIView animateWithDuration:0.2 animations:^
self.viewForBaselineLayout.alpha = 0;
];
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
[UIView animateWithDuration:0.2 animations:^
self.viewForBaselineLayout.alpha = 1;
];
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
[UIView animateWithDuration:0.2 animations:^
self.viewForBaselineLayout.alpha = 1;
];
@end
最后在你的 UIVIewController 中使用它:
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
[super viewDidLoad];
// Do any additional setup after loading the view.
MyButton *button = [[MyButton alloc]init];
[button setFrame:CGRectMake(100, 100, 100, 100)];
[button setTintColor:[UIColor blackColor]];
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[button setTitle:@"HelloThere" forState:UIControlStateNormal];
[self.view addSubview:button];
【讨论】:
好的,我只是这样做了,但是当点击按钮时它会消失并且不显示突出显示的状态图像。谢谢。 那么你究竟希望你淡出什么?标题? 我想在按钮状态之间淡出 我想要的不仅仅是进入按钮按下的突出显示状态,而是淡入淡出过渡到突出显示状态,然后当你移除你的手指时淡出回到正常状态 你的高亮效果是什么?颜色变化?褪色?动画片?您只需要覆盖“- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated”,并更改“self.viewForBaselineLayout.alpha = 0;”到:“ [self setHighlighted:YES];”【参考方案2】:你试过了吗?
[UIView animateWithDuration:0.2 animations:^
button.highlighted = YES;
];
【讨论】:
这不会淡入或淡出以上是关于动画 UIButton 状态以在点击时淡入和淡出的主要内容,如果未能解决你的问题,请参考以下文章
Cocoa - UIControlStateNormal 和 UIControlStateDisabled 背景图像之间的 UIButton 淡入淡出过渡