0324的学习笔记----里面最重要的就是一个tom猫的动画,和涉及到的内存问题(创建imageview的两种方式,imagenamed就会形成缓存,占用很多内

来源:互联网 发布:数据整理的意义不包括 编辑:程序博客网 时间:2024/06/08 06:10

还是可以自己对着视频,或者自己有空的时候在做一遍,把按钮做全面的,比较有意思。

看视频的时间是:2015.11.2日上午。

0324:

    01-作业—QQ登陆界面

     (1) 键盘的退出:[self.view endEditing:YES];

     (2)程序的运行过程:程序一启动,首先读取main.storyboard软件描述文件,然后创建箭头所指的控制器,然后创建对应的view,那个view长什么样子,根据storyboard里面创建view,顺便创建子控件,然后显示在手机界面上面。

    03-transform的使用(上,下,左,右和缩放transformscale)

      CGAffineTransformMakeRotation(M_PI_4);

    04-图片浏览器01-基本展示

      小案例:使用UIImageView,UILabel,UIButton实现一个综合小案例。

    07-图片浏览器04-补充

       这个过程确实是精简了很多,用到的一些技巧比较多,已经保存到云盘和csdn上面了。

       然后在这个过程中需要注意和掌握的知识点如下:

       (1)更换UIImageVIew的图片

       (2)了解UIImageVIew的contentMode

         (3)   更换UILabel的文字

       (4) 在storyboard中设置UILabel的自动换行和文字居中

         (5)   NSArray和NSDictionary的简单使用

         (6)   Plist文件的创建和读取

       (7) 属性的懒加载

         (8)   viewDidLoad方法的使用

         (9)    UIButton的多种状态(普通状态,高亮状态以及失效状态)

      08-汤姆猫(帧动画的一个典型—原理:每隔一段时间换个动画)

         四个知识点:

         ****UIImageView的帧动画的使用

         ****UIImage的2种加载方式

         ****重复代码的封装抽取

         ****文档注释的写法—(很好用呢)

         这里面有一个素材库,素材库的图片还是蛮多的。(按钮,超级猜图,大众点评,箭头,汤姆猫,喜马拉雅,图片浏览器等);

         完善了下李明杰的汤姆猫的代码,果然还是蛮好玩滴,嘻嘻、。

        (1)我的jpg如果直接拖文件夹到supporting file还是不行。只得自己建个文件夹。图片文件夹要是绿的才行,不是绿的的话,可以获取到相应的虚拟文件夹里面的文件名,但是无法读取到里面的内容。这一点还是要注意的。

      (2)防止内存暴增的两种手段

              image加载的两种方式:一种是imagenamed ,另外一种是利用bundle:imagewithcontentsoffile没有缓存,传入文件的全路径.然后就变成内存管理的问题了,在设置一个时间之后,清空images数组,就释放掉了。

     -(void)runAnimationWithCount:(int) count name:(NSString *)name

{

    //1加载图片

    NSMutableArray *images = [NSMutableArray array];

    for (int i  = 0; i<count; i++) {

        NSString *filename = [NSString stringWithFormat:@"%@_%02d.jpg",name,i];

        //NSLog(@"%@",filename);(传入文件名,有缓存,在xcode里面看的时候,会明显的看到内存暴增)

        //UIImage *image = [UIImage imageNamed:filename];

        

        //imagewithcontentsoffile没有缓存,传入文件的全路径

        NSBundle *bundle = [NSBundle mainBundle];

        NSString *path = [bundle pathForResource:filename ofType:nil];

        UIImage *image = [UIImage imageWithContentsOfFile:path];

        [images addObject:image];

    }

    self.tom.animationImages = images;

    

    //2设置需要播放的次数(1次)

    self.tom.animationRepeatCount = 1;

    //3设置播放时间

    self.tom.animationDuration  = images.count *0.05;

    

    CGFloat delay = self.tom.animationDuration + 1.0;

    [self.tom startAnimating];

    

    //其实是调用了imageview的setanimationimages = nil

    //即是: [self.tom  setAnimationImages:nil];

    [self.tom performSelector:@selector(setAnimationImages:) withObject:nil afterDelay:delay];

}

- (IBAction)knock {

    //if (self.tom.isAnimating)  return;//这一句加了之后是防止覆盖之前的动画。

    [self runAnimationWithCount:81 name:@"knockout"];   

}


 (3)重复代码的封装抽取

    当一份代码重复出现在程序的多处地方,就会造成程序的又臭又长,当这份代码的结构要修改的时候,每一处出现这份代码的地方都得修改,造成程序的扩展性很差。因此,要将重复出现的代码抽取到某个方法中,在需要这份代码的地方调用方法即可。

    抽取代码的思路:

    将相同的代码放到一个方法中,将不同的值当做方法参数传进来。

(4)/** 这是一只显示图片的猫 */  这种文档性注释比较好,因为对应使用变量或者调用方法的时候会提示,大大方便开发。——哇,好方便好方便啊

汤姆猫比较简单,但是里面有一个非常值得注意的知识点,就是要关注内存的变化。同时知道这个动画是uiimageView带的动画。

09——uibutton和uiimageview的对比

2.UIImageView和UIButton

1> 使用场合

* UIImageView: 如果仅仅是显示图片,不需要监听图片的点击

* UIButton: 既要显示图片,又要监听图片的点击


2> 相同:能显示图片


3> 不同点

* UIButton能处理点击事件, UIImageView不能处理点击事件

* UIButton既能显示图片, 又能显示文字

* UIButton能同时显示两张图片

* UIButton继承自UIControl, 因此默认就能处理事件

* UIImageView继承自UIView, 因此默认就不能处理事件


10———xcode的模拟器和文档安装(妥妥的解决了我的一些困惑啊,就是模拟器里面找不到ios6和ios7的不同)


0 0
原创粉丝点击