年年有"余"

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2910|回复: 0

[实用控件] ios实战开发之汤姆猫

[复制链接]
  • TA的每日心情
    奋斗
    2022-12-13 21:26
  • 签到天数: 371 天

    [LV.9]以坛为家II

    发表于 2014-3-28 21:01:48 | 显示全部楼层 |阅读模式
    1、效果演示




    2、主体代码说明:

    SAViewControler.m
    1. //
    2. //  SAViewController.m
    3. //  TomCat
    4. //
    5. //  Created by yusian on 14-3-27.
    6. //  Copyright (c) 2014年 yusian. All rights reserved.
    7. //
    8. #import "SAViewController.h"
    9. @interface SAViewController ()
    10. {
    11.     NSDictionary *_animation;
    12. }
    13. @end
    14. @implementation SAViewController
    15. // view加载完成后会自动调用一次该方法
    16. - (void)viewDidLoad
    17. {
    18.     [super viewDidLoad];
    19.         // Do any additional setup after loading the view, typically from a nib.
    20.    
    21.     // 获得tom.plist文件的路径
    22.     NSBundle *bundle = [NSBundle mainBundle];
    23.     NSString *path = [bundle pathForResource:@"tom" ofType:@"plist"];
    24.    
    25.     // 创建一个字典用来存储plist文件中的内容,key:图片文件夹名称及对应的value:图片数
    26.     // 图片名 = 图片文件夹名+序号 = 按钮title = 字典key
    27.     _animation = [NSDictionary dictionaryWithContentsOfFile:path];
    28.    
    29. }
    30. // 点击事件处理,以下代码经过重构处理,所有的点击事件都由该一个方法处理,通过按钮title区分点击事件的来源
    31. - (IBAction)btnClick:(UIButton *)sender {
    32.     // 加层判断,如果动画正在播放则直接返回,说明暂时不执行任何操作
    33.     if (self.image.isAnimating) return;
    34.    
    35.     // 取出所点击按钮的title字段值
    36.     NSString *title = [sender titleForState:UIControlStateNormal];
    37.    
    38.     // 创建一个数组用来存储UIImage对象
    39.     NSMutableArray *images = [[NSMutableArray alloc] init];
    40.    
    41.     // 开始循环,每次循环长度都等于每个动画所包含的图片数,通过循环将UIImage存入到images数组中
    42.     for (int i = 0; i < [_animation[title] integerValue]; i++) {
    43.         
    44.         // 通过按钮传进来的titel,间接取到了每个按钮对应的动画及动画对应的所有图片
    45.         NSBundle *bundle = [NSBundle mainBundle];
    46.         NSString *imagePath = [bundle pathForResource:[NSString stringWithFormat:@"%@_%02d.jpg", title, i] ofType:nil];
    47.    
    48.         // 将取出来的图片一张一张加入到image数组中
    49.         [images addObject:[UIImage imageWithContentsOfFile:imagePath]];
    50.     }
    51.    
    52.     // UIImage的animationImages方法可以通过赋值的图片,自动将图片按顺序更换(即逐帧动画,类似旧式电影播放原理)
    53.     self.image.animationImages = images;
    54.    
    55.     // 动画重复次数
    56.     self.image.animationRepeatCount = 1;
    57.    
    58.     // 动画时长,最佳时间为根据图片数目而定,根据人眼视觉暂留特性,最佳频率是0.12秒一帧(旧式电影更换胶片频率)
    59.     self.image.animationDuration = 0.12 * images.count;
    60.    
    61.     // 一切就绪,开始动画
    62.     [self.image startAnimating];;
    63.    
    64. }
    65. @end
    复制代码
    3、源代码参考下载:
    游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0


    基础参考链接:ios实战开发之UISegmentedControl



    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    手机版|小黑屋|Archiver|iOS开发笔记 ( 湘ICP备14010846号 )

    GMT+8, 2024-4-27 15:24 , Processed in 0.053116 second(s), 23 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表