随手整理

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;//状态栏的样式为白色
}


11.设置按钮的状态
self.nextQuestionBtn.enabled = self.index != (self.questions.count - 1);//设置按钮状态为可用或不可用
optionBtn.hidden = YES;//设置按钮隐藏


12.让子控件一起执行同一个方法.
[self.optionView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];


13.延迟0.5秒执行selector()中的方法
[self performSelector:@selector(nextQuestion) withObject:nil afterDelay:0.5];


14.将一个UIView显示到最前面只需要调用父类的bringSubviewToFront
[self.view bringSubviewToFront:self.iconBtn];


15.将一个UIView显示到最后面只需要调用父类的sendSubviewToBack
[self.view sendSubviewToBack:self.iconBtn];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值