iOS学习笔记06 支付时简单的动画效果

我想到制作app中经常会碰到支付的操作,值支付操作的时候,经常是伴随着一个小圈圈的转动,和按钮上文字的变化,就像下面三张图。大家看到作为新手的我写的东西有什么问题的时候一定要指出来,相互交流下,因为我还处在学习的阶段,身边也没有个懂这个的,所以希望大家如果看到这篇有问题或者有什么更好的办法的时候一定要告诉我,让我也学习学习。谢谢大家了
我估计写出来的文章大家也不会太看得懂,还是配合着demo来看吧支付时简单的动画效果

上面三张图就算是这次的需求,完成起来其实真的很简单 ,只需要一个页面就可以完成这样的demo,虽然我觉得写出来对一些技术好的小伙伴意义不大,但是作为新手的我,在刚遇到这个问题的时候没有立即想出方法,在这里给出的也是一个很简单粗糙的一个实现方法。
那就直接进去正文。
在这个页面上首先看到的是一个按钮,上面显示着点击付款,这个很简单,创建button就行了,在点击之后,按钮上的额字样发生了变化,而且多了个小圈圈,小圈圈开始转圈,倒了规定时间弹出弹框告知时间到,
首先呢,就是第一步就是声明对象了,

@property (nonatomic,strong) UIButton *button;//界面显示的按钮
@property (nonatomic,strong) NSTimer *timer;//涉及到倒计时
@property (nonatomic,strong) UIImageView *imageView;//小圈圈
@property (nonatomic,strong) UILabel *label;//点击按钮开始倒计时的时候文字发生变化的label
@property (nonatomic,assign) int second;//需要倒计时的时间

这上面的是最基础的,接下来就是进行懒加载

//懒加载
-(UIButton *)button
{
  if (!_button)
  {
    _button = [UIButton buttonWithType:UIButtonTypeCustom];
    [self.view addSubview:self.button];
  }
  return _button;
}
-(UIImageView *)imageView
{
  if (!_imageView)
  {
    _imageView = [[UIImageView alloc]initWithFrame:CGRectMake(30, 11, 18, 18)];**
    [self.button addSubview:self.imageView];**
  }
  return _imageView;
}
-(UILabel *)label
{
  if (!_label)
  {
    _label = [[UILabel alloc]initWithFrame:CGRectMake(70, 0, 100, 40)];
    [self.button addSubview:self.label];
  }
  return _label;
}

在这里说明一下,懒加载的过程是很有必要的没因为在倒计时一次之后再进行倒计时的是,控件就会有复用的效果,这个问题之前遇到的时候脑子没转过来,看到按钮上有两个小圈圈,找不到问题的所在,最后懒加载了下就搞定了。
在viewDidLoad方法中简单的设置一下

  self.title = @"ChangeButton";
  self.second = 50;
  [self setButton];//设置按钮样式属性

在这里简单的解释下,second作为倒计时的事件,其实这么说是不太准确的,因为在timer初始化中要设置倒计时的速度,所以这个50只是为了配合小圈圈转的快一点而设置的高一点。
//设置按钮样式属性

-(void)setButton
{
  [self.button setEnabled:YES];
  [self.button setFrame:CGRectMake(0, 0, 200, 40)];
  [self.button setCenter:self.view.center];
  [self.button setBackgroundColor:[UIColor lightGrayColor]];
  [self.button setTitle:@"点击开始付款" forState:UIControlStateNormal];
  [self.button addTarget:self action:@selector(click) forControlEvents:UIControlEventTouchUpInside];
  [self.label setHidden:YES];
  [self.imageView setHidden:YES];
}
//按钮点击事件
-(void)click
{
  [self setPayingNoticeOnButton];//点击按钮之后的按钮样式变化
}

以上是设置按钮正常的时候的样式
接下来要设置点击之后产生的变化了

//点击按钮之后的按钮样式变化
-(void)setPayingNoticeOnButton
{
  /*
  在按钮开始变化的时候,开始发送相应的网络请求
  [self sendGetResultRequest];
  */
  //此处进行按钮变化时的设置。
  [self.button setEnabled:NO];
  [self.button setTitle:@"" forState:UIControlStateNormal];
  [self.label setHidden:NO];
  [self.imageView setHidden:NO];
  [self.label setText:@"正在付款中"];
  [self.imageView setImage:[UIImage imageNamed:@"小圈圈"]];
  self.timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(changeLocation:) userInfo:nil repeats:YES];
  [[NSRunLoop currentRunLoop]addTimer:self.timer forMode:NSDefaultRunLoopMode];
}

在timer初始化过程中,进行设置,这样的话50秒就是5秒,此时的小圈圈的转速也可以快一点。而且在这个方法中一般可以进行发送请求,查看支付结果之类的,得到结果再进行相应的处理。

//按钮上小圈圈转动代码
- (void)changeLocation:(NSTimer *)timer
{
  self.second --;
  NSLog(@"second-------%d-----",self.second);
  if (self.second == 0)
  {
    [timer invalidate];
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"付款正在受理中" message:@"银行付款结果大概还需5秒返回" delegate:self cancelButtonTitle:@"继续等待" otherButtonTitles:@"先逛逛", nil];
    alertView.tag = 1111;
    [alertView show];
    self.second = 50;
  }
  else
  {
  self.imageView.transform = CGAffineTransformRotate(self.imageView.transform, M_PI_4/2);**
  }
}

时间到0的时候,弹出提示框。然后在此时遵循弹出框的协议

UIAlertViewDelegate

最后进行下弹窗按钮点击之后的相应效果。

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
  if (alertView.tag == 1111)
  {
    if (buttonIndex == 0)
    {
      [self setPayingNoticeOnButton];
    }
    else
    {
      NSLog(@"去逛逛了");
      [self setButton];
    }
  }
 }

这样一个新手做的支付时的效果就出来了,不会弄动态图,就没传。大家看到有问题的希望指出来,一定要指出来,相互讨论一下呢!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,050评论 25 707
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 11,945评论 4 60
  • 蓝莲花 洁白又淡蓝 洁白是清纯 淡蓝是忧伤 蓝莲花 摇曳又静止 摇曳是妥协 静止是坚定
    潇湘青女阅读 365评论 2 19
  • 踏破风沙的岁月,留不住一颗透明的心。现在的生活只有黑暗的光芒,我们的童真已经失去。为我们感到惋惜,因为快乐离我...
    御雨阅读 95评论 0 0