UITextField抖动动画

最近做项目,需求中要求用户名或密码输错时,输入框要抖动(类似Mac登录密码错误的抖动效果)。现将代码分享出来:


@interface UITextField (YHShakeUITextField)

- (void) shake;

@end



#import "YH-TextField.h"

#import <QuartzCore/QuartzCore.h>


@implementation  UITextField (YHShakeUITextField)


//self.superView

- (void) shake {

CAKeyframeAnimation *keyAn = [CAKeyframeAnimation animationWithKeyPath:@"position"];

[keyAn setDuration:0.5f];

NSArray *array = [[NSArray alloc] initWithObjects:

  [NSValue valueWithCGPoint:CGPointMake(self.center.x, self.center.y)],

  [NSValue valueWithCGPoint:CGPointMake(self.center.x-5, self.center.y)],

  [NSValue valueWithCGPoint:CGPointMake(self.center.x+5, self.center.y)],

  [NSValue valueWithCGPoint:CGPointMake(self.center.x, self.center.y)],

  [NSValue valueWithCGPoint:CGPointMake(self.center.x-5, self.center.y)],

  [NSValue valueWithCGPoint:CGPointMake(self.center.x+5, self.center.y)],

  [NSValue valueWithCGPoint:CGPointMake(self.center.x, self.center.y)],

  [NSValue valueWithCGPoint:CGPointMake(self.center.x-5, self.center.y)],

  [NSValue valueWithCGPoint:CGPointMake(self.center.x+5, self.center.y)],

  [NSValue valueWithCGPoint:CGPointMake(self.center.x, self.center.y)],

  nil];

[keyAn setValues:array];

[array release];

NSArray *times = [[NSArray alloc] initWithObjects:

  [NSNumber numberWithFloat:0.1f],

  [NSNumber numberWithFloat:0.2f],

  [NSNumber numberWithFloat:0.3f],

  [NSNumber numberWithFloat:0.4f],

  [NSNumber numberWithFloat:0.5f],

  [NSNumber numberWithFloat:0.6f],

  [NSNumber numberWithFloat:0.7f],

  [NSNumber numberWithFloat:0.8f],

  [NSNumber numberWithFloat:0.9f],

  [NSNumber numberWithFloat:1.0f],

  nil];

[keyAn setKeyTimes:times];

[times release];

[self.layer addAnimation:keyAn forKey:@"TextAnim"];

}

@end



在登录的类里调用如下:

-(void)isloginbuttonClick

{

    if ([userTextField.text length] == 0)

    {

        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"watch out" 

                                                            message:@"please input user" 

                                                           delegate:nil 

                                                  cancelButtonTitle:@"OK"

                                                  otherButtonTitles:nil,nil];

        [alertView show];

        [alertView release];

        [userTextField shake];

    }

    else if ([passwordTextField.text length] == 0)

    {

        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"watch out"

                                                            message:@"please input password"

                                                           delegate:nil

                                                  cancelButtonTitle:@"OK"

                                                  otherButtonTitles:nil, nil];

        [alertView show];

        [alertView release];

        [passwordTextField shake];

    }

    else 

    {

        SecondViewController *secondViewController = [[SecondViewController alloc] init];

        [self.navigationController pushViewController:secondViewController animated:YES]; 

    }

}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值