1-10(退出键盘,设置按钮的背景图,transform属性,imageView序列帧动画,九宫格算法...)

(1-10目录)

1.取得2个文本输入框的值

2.退出键盘

3.设置按钮的背景图

4.执行动画

5.手动创建按钮以及设置按钮的一些基本属性

6 transform属性

7.imageView序列帧动画

8.九宫格算法

9.通过xib创建局部控件,利用模型封装加载数据

10设置状态栏的样式为白色

{

扯淡环节:

工作这么久了, 发现一些细节有时候总是忽略, 现在就把我刚接触时的知识点给整理出来!,

没事自己看看, 也分享给大家!

分享,创造快乐!哈哈

xq每天都生活在快乐当中, 愿你们也是!

}

1.取得2个文本输入框的值
NSString *text1 = self.num1.text;
NSString *text2 = self.num2.text;

 

2.退出键盘
// 第一响应者:叫出键盘的那个控件
// 不当第一响应者(就会把键盘退下)
[self.num1 resignFirstResponder];
[self.view endEditing:YES];//退出键盘

// 不允许直接修改  对象的 结构体属性的成员
// 允许直接对象的结构体属性
   


3.设置按钮的背景图,
UIImage *image = [UIImage imageNamed:@"btn_01"];//根据图片名创建一张图片
[btn setBackgroundImage:image forState:uicontrolstate];//设置按钮在背景图片

4.执行动画
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:2.0];//动画执行的时间
中间部分为要执行的动画代码
[UIView commitAnimations];

 


5.手动创建按钮以及设置按钮的一些基本属性
UIButton *btn = [[UIButton alloc] init];//创建按钮
[self.view addSubview:btn];//把创建的按钮添加到父控件当中
btn.frame = CGRectMake(50, 50, 100, 100);//设置按钮的位置以及大小
UIImage *normal = [UIImage imageNamed:@"btn_01"];//通过文件名加载图片(凡是PNG图片,都不用加拓展名)
[btn setBackgroundImage:normal forState:UIControlStateNormal];//设置普通状态下的背景图片
UIImage *high = [UIImage imageNamed:@"btn_02"];
[btn setBackgroundImage:high forState:UIControlStateHighlighted];//加载高亮的图片
[btn setTitle:@"点我啊" forState:UIControlStateNormal];//设置按钮在普通状态下的文字
[btn setTitle:@"摸我干啥" forState:UIControlStateHighlighted];//设置按钮在高亮状态下的文字
[btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];//设置按钮在普通状态下的文字的颜色
[btn setTitleColor:[UIColor blueColor] forState:UIControlStateHighlighted];//设置按钮在高亮状态下的文字颜色
[btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];监听按钮点击,当按钮点击时调用btnClick:方法  
btn2.center = CGPointMake(250, 250);//设置按钮的中点位置

 


6 transform属性
btn.transform = CGAffineTransformMakeRotation(-M_PI_4);//设置按钮的旋转属性,但不是在上一次的基础上进行旋转的,一直是相对于它最初的位置来讲的
btn.transform = CGAffineTransformRotate(head.transform, M_PI_4);//设置按钮在原来的基础上进行旋转45度,角度是正数:顺时针, 角度是负数:逆时针
head.transform = CGAffineTransformMakeTranslation(0, -100);//平移属性,,不是在上一次的基础上进行平移,一直是相对于它最初的位置来讲的
head.transform = CGAffineTransformTranslate(head.transform, 0, -100);在上一次的基础上进行平移
head.transform = CGAffineTransformMakeScale(1.5, 1.5);//缩放属性,1.5为缩放的比例,缩放比例小于1,是为缩小,大于1是为放大不是在上一次的基础上进行缩,一直是相对于它最初的位置来讲的
head.transform = CGAffineTransformScale(head.transform, 1.5, 1.5);在上一次的基础上进行缩放  
UIButton *head = (UIButton *)[self.view viewWithTag:10];//获也Tag为10的那个按钮

7.imageView序列帧动画
- (void)runAnimationWithCount:(int)count name:(NSString *)name
{
   if (self.tom.isAnimating) return;//如果动画正在播放,不允再继续播放
   NSMutableArray *images = [NSMutableArray array];//创建一个可变数组,存放所有的图
   for (int i = 0; i<count; i++) {
       NSString *filename = [NSString stringWithFormat:@"%@_%02d.jpg", name, i];//根据传入的参数拼接图片名
       NSBundle *bundle = [NSBundle mainBundle];//获取应用程序的资源路径
       NSString *path = [bundle pathForResource:filename ofType:nil];//根据文件名获取该文件在应用程序中的资源路径
       UIImage *image = [UIImage imageWithContentsOfFile:path];//根据图片的路径获取一张图片
       [images addObject:image];//把图片添加到可变数组中
   }
   self.tom.animationImages = images;//按顺序播放数组images中的图片
   self.tom.animationRepeatCount = 1;//调置播放的次数
   self.tom.animationDuration = images.count * 0.05;//设置播放的时间
   [self.tom startAnimating];//开始播放动画
   CGFloat delay = self.tom.animationDuration + 1.0;//播放完毕一秒后清除内存
   [self.tom performSelector:@selector(setAnimationImages:) withObject:nil afterDelay:delay];
}

注意:  
用UIImage *image = [UIImage imageNamed:filename];获取图片会有缓存
UIImage *image = [UIImage imageWithContentsOfFile:path];//根据图片的路径获取一张图片,用这种方法获取的图片没有缓存

8.九宫格算法
   int totalColumns = 3;//总列数(一行最多3列)
   CGFloat appW = 85;//九宫格内部控件的宽度
   CGFloat appH = 90;//九宫格内部控件的高度
   间隙 = (控制器view的宽度 - 总列数 * 内部控件宽度) / 总列数+1
   CGFloat marginX = (self.view.frame.size.width - totalColumns * appW) / (totalColumns + 1);
   CGFloat marginY = 15;
   for (int index = 0; index<self.apps.count; index++) {
       UIView *appView = [[UIView alloc] init];
       appView.backgroundColor = [UIColor redColor];
       int row = index / totalColumns;//计算当前所在的行
       int col = index % totalColumns;//计算当前所在的列
       CGFloat appX = marginX + col * (appW + marginX);//计算当前控件的x值 (间隔+当前所在的列*(控件的宽度+一个间隔));
       CGFloat appY = 30 + row * (appH + marginY);//计算当前控件的y值 (第一个控件Y的值 + 当前所在的行* (控件的高度 + 一个间隔));
       appView.frame = CGRectMake(appX, appY, appW, appH);//设置内部控件的位置和大小
       [self.view addSubview:appView];//把创建的控件添加到控制器View当中
      }


9.通过xib创建局部控件,利用模型封装加载数据
   1.创建一个模型XQApp来封装从plist文件文件中读取的数据.模型中要提供两个方法来来初始化模型
   - (instancetype)initWithDict:(NSDictionary *)dict;
   + (instancetype)appWithDict:(NSDictionary *)dict;


   - (instancetype)initWithDict:(NSDictionary *)dict
      {
       if (self = [super init]) {
       self.name = dict[@"name"];
       self.icon = dict[@"icon"];
      }
      return self;
      }

+ (instancetype)appWithDict:(NSDictionary *)dict//根据字典加载模型
   {
      return [[self alloc] initWithDict:dict];
   }

2.在控制器当中定义一个NSArray数组*apps,用来存放每一个封装好了的模型.采用懒加载方式,重写get方法
   - (NSArray *)apps
   {
       if (_apps == nil) {//判断数组中是否为空, 如果为空的放话,那么从plist文件加载数据.
           NSString *path = [[NSBundle mainBundle] pathForResource:@"app.plist" ofType:nil];//获取app.plist文件的资源路径
           NSArray *dictArray = [NSArray arrayWithContentsOfFile:path];//从获取的路径中加载数组
           NSMutableArray *tempAppArray = [NSMutableArray array];//定义一个临时存放每一个模型的可加变数组!
           for (NSDictionary *dict in dictArray) {//遍历从plist文件中读取的数组
               MJApp *app = [MJApp appWithDict:dict];//将数组中取出的每一个字典放传入到模型的初始化方法中, 给模型进行赋值,然后返回这个模型
               [tempAppArray addObject:app];把返回的模型放到临时数组当中
           }
           _apps = appArray;//把临时数中赋值给控制器定义的,app数组中.
   }
   return _apps;
   }

3.创建一个名为MJAppView.xib的Xib文件,在xib文件中拖放一个View,再往view中拖入其它的子控件.
   4.创建一个继承UIView类, 名为MJAppView,把xib的Custom Class中的class改为MJAppView
   5.再把xib中的子控件拖线连到MJAppView中,做为MJAppView的属性.
   6.在MJAppView头文件定义一个MJApp *app;履性,然后重写app的set方法,给内总属性进行赋值
   - (void)setApp:(MJApp *)app
   {
       _app = app;
       self.iconView.image = [UIImage imageNamed:app.icon];
       self.nameLabel.text = app.name;
   }
   用来存入传入过来的模型数据.再提供一个类方法用来加载xib文件,并传入一个模型,给MJAppView中的app,属性时赋值,
   + (instancetype)appViewWithApp:(MJApp *)app;
   + (instancetype)appViewWithApp:(MJApp *)app
   {
       NSBundle *bundle = [NSBundle mainBundle];
       NSArray *objs = [bundle loadNibNamed:@"MJAppView" owner:nil options:nil];//读取xib文件(会创建xib中的描述的所有对象,并且按顺序放到数组中返回)
       MJAppView *appView = [objs lastObject];//获得返回xib对象数组中的最后一个元素
       appView.app = app;//给MJAppView中的app属性进行赋值,就会调用上面的set方法
       return appView;//返回加载好的对象
   }

7.在控件器当中创建给MJAppView对象
   MJAppView *appView = [MJAppView appViewWithApp:self.apps[index]];//index为控制器中app对象数组中的下标
  [self.view addSubview:appView];

 

10设置状态栏的样式为白色
- (UIStatusBarStyle)preferredStatusBarStyle
{
   return UIStatusBarStyleLightContent;//状态栏的样式为白色
}

 

 


本文出自 “技术博客” 博客,谢绝转载!

你可能感兴趣的:(imageView序列帧动画,九宫格算法...))