动画 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 状态以在点击时淡入和淡出的主要内容,如果未能解决你的问题,请参考以下文章

点击时如何淡入整个 UIButton 而不仅仅是标题?

UIButton 图像从 URL 加载后淡入淡出

jQuery 为 div 设置动画,同时淡入和淡出触发器

动画淡入/淡出标题按钮不起作用

Cocoa - UIControlStateNormal 和 UIControlStateDisabled 背景图像之间的 UIButton 淡入淡出过渡

Android - 如何使用交叉淡入淡出动画更改状态栏颜色[重复]