iOS开发脚踏实地学习day03-九宫图

文章详细介绍了如何使用for循环实现九宫格布局算法,并且指导了如何利用iOS界面调试工具Reveal进行高效调试,包含字典转模型、KVC、动画效果、重构和XIB自定义文件等关键概念与实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1、九宫格算法

任意类似九宫格的算法,用for循环实现,在同一行的Y值相同,在同一列的X值相同,用求余和商来确认是同行还是同列。

    for (int i=0; i<(num); i++) {
        //同行的Y值相同,X变化
        int col = i%colNum;
        CGFloat appViewX = (col + 1)*deltaX + col*appViewW;
        //同列的X值相同,Y变化
        int row = i/colNum;
        CGFloat appViewY = startY + row*(appViewH + deltaY);
        UIView *appView = [[UIView alloc] initWithFrame:CGRectMake(appViewX, appViewY, appViewW, appViewH)];
//        appView.backgroundColor = [UIColor yellowColor];
        [self.view addSubview:appView];
    }


2、字典转模型

错误提示:CUICatalog: Invalid asset name supplied: (null)

原因是[UIImage imageNamed:nil];

-(NSArray *)appList{
    if(_appList == nil){
        //applist保存的是字典=>模型
//        NSString *p = [[NSBundle mainBundle] pathForResource:@"app.plist" ofType:nil];
        
        NSArray *array = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"app.plist" ofType:nil]];
//        _appList = [NSArray arrayWithContentsOfFile:p];
        
        //创建一个临时数组
        NSMutableArray *arrM = [NSMutableArray array];
        for (NSDictionary *dict in array) {
            AppleInfo *appInfo = [[AppleInfo alloc] init];
            appInfo.name = dict[@"name"];
            appInfo.icon = dict[@"icon"];
            [arrM addObject:appInfo];
        }
        _appList = arrM;
    }
    return _appList;
}

3、KVC

/**
使用KVC的注意事项
1.plist中的键值名称必须与模型中的属性一致
2.模型中的属性可以不全部出现在plist中
*/

        //KVC - key value coding(键值编码)
        //是一种间接修改/读取对象属性的一种方法
        //KVC 被成为 cocoa 的大招
        //参数:
        //1.数值
        //2.属性名称
//        [self setValue:dict[@"name"] forKey:@"name"];
//        [self setValue:dict[@"icon"] forKey:@"icon"];
        //setValuesForKeysWithDictionary本质上就是调用以上两句代码
        [self setValuesForKeysWithDictionary:dict];

4、动画效果

        //*****给按键添加监听方法
        [button addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];

-(void)click:(UIButton *)button{
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(80, 480,160, 40)];
    label.backgroundColor = [UIColor redColor];
    label.text = [self.appList[button.tag] name];
    label.textAlignment = NSTextAlignmentCenter;
    [self.view addSubview:label];
    
    //初始透明度,完全透明
    label.alpha = 0.0;
    //******动画效果
    [UIView animateWithDuration:1 animations:^{
        label.alpha = 1;
    } completion:^(BOOL finished) {
        [UIView animateWithDuration:1 animations:^{
            label.alpha = 0;
        } completion:^(BOOL finished) {
            [label removeFromSuperview];
        }];
    }];
}

5、重构

原则:让代码放在最应该存在的地方

方法:

1)设定开发计划,开发步骤

2)每一个步骤告一段落后,需哟啊暂停,审核代码,有针对性的重构

目前要做的,尽量不要出现重复的代码!

6、XIB自定义文件

        //*****使用XIB自定义视图,lastObject是数组最后一个
        //使用XIB可以有多个控件,一般只使用一个
//        AppView *appView = [[[NSBundle mainBundle] loadNibNamed:@"AppView" owner:nil options:nil] lastObject];
        
//        AppView *appView = [AppView appView];
        AppView *appView = [AppView appViewWithAppInfo:self.appList[i]];
        appView.frame = CGRectMake(appViewX, appViewY, appViewW, appViewH);
        [self.view addSubview:appView];
        //实现视图内部的细节
//        AppleInfo *appInfo = self.appList[i];
        appView.appleInfo = self.appList[i];

7、IOS界面调试利器Reveal使用(Xcode集成)说明

视频里不准确,http://www.th7.cn/Program/IOS/201507/496988.shtml

破解:

~/资源库/Caches/

com.ittybittyapps.Reveal文件删除

~/资源库/Preferences/

com.ittybittyapps.Reveal.plist删除

又可以使用30天

Xcode6会有类似的功能

在Xcode中的使用方法:

1、首先安装好Reveal,下载地址:http://download.revealapp.com/Reveal.app.zip

2、在Reveal软件的菜单栏中选择【Help】-【Show Reveal Library In Finder】,会显示Reveal的FrameWork和dylib文件,需要在Xcode项目中引入。

3、在Xcode项目中配置如下几个地方:

    1)添加Reveal的Framework文件,将Framework文件拖到项目导航面板中,在弹窗中选择Add to Target和Copy Item if need。(这个操作会把dylib文件复制到您的项目中,如果reveal更新了,那需要重新操作一遍来覆盖旧文件)

    2)在项目配置区域,选择Build Phases,在Link   Binary With Libraries节点中删除Reveal库。

  3)  选择Build Setting,在右上角搜索框中输入关键字:Other Link,会自动帅选出Linking节点中的Other Linker Flags属性节点,输入内容:

-ObjC -lz -framework Reveal

3、Xcode的配置完成,现在选择一个iphone模拟器开始运行您的项目。运行成功后,切换到Reveal程序界面。在左上角No Connection那个下拉框中选择您的项目名称。

4、开始使用吧!Reveal的三维显示真的太棒了:

注意哦:如果您选择真机调试,那么需要确保手机和电脑处于同一个Wifi网络中(同一个网段中)。

我第一次使用时,就碰到这个问题:电脑插的有线连接的是不带无线功能的路由器(电脑网段是192.168.1.1),手机连的wifi是使用便携式wifi设备,网段是192.168.99.1,虽然2个设备都能联网,但是对于Reveal来说,也许这样是无法识别到的,所以,我换了一个带无线的路由器,让手机和电脑的IP保持在一个网段内,就可以了!

tips:

本文由wp2osc导入,原文链接:http://devonios.com/ios-ui-reveal-in-xcode.html

由于OSChina的OpenAPI在处理content参数时会自动过滤img标签,所以无法显示图片,详见


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值