0814-应用程序管理 (代码创建九宫格)(九宫格详细设计)

0814-应用程序管理

-------------

代码创建九宫格

1、UIView CGRectMack(x,y,宽,高)

2、宽度 高度宏定义一下

3、x,y根据for循环中的i来确定是第几行第几列

4、计算x,y值

5、数值填入CGRect()中

--------------

九宫格详细设计

1、代码创建UIImageView(设置填充模式) UILabel  UIButton

2、label   (titleLabel.font 按钮不能直接设置字体 通过titleLabel属性来设置字体)

3、字典转模型 (数组包字典变成 数组包对象  对象initWithDict方法和类方法 appInfoWithDict HMAppInfo类名  alloc实例化对象 init initWithDict都属于成员方法 ,

返回值类型改成instanceType 可以避免接收该对象指针类型不匹配 主动推断接收对象是否是匹配类型 如:NSString *str = [HMAppInfo appInfoWithDict:dict];这样会编译提示错误

KVC self.name = dict[@"name"];等同于 [self setValue:dict[@"name"] forKeyPath:@"name"]; 大招 [self setValuesForKeysWithDictionary:dict];

readonly 不会生成带下划线成员变量 需要手动加入@synthesize image = _image;

4、数据都放到对象模型HMAppInfo类中

5、按钮监听方法 弹出Label提示文字 (label颜色用 [UILabel colorWithWhite:0.0 alpha:0.2]     label的alpha值从0  变成1动画效果  收尾式动画不采用 用animationDuration方法)

6、empty模板创建xib界面  减轻代码创建控件设置多个属性的麻烦,xib界面中都将这些设置好了   (view模板也可以  代码创建循环view 不能使用懒加载控件了 否则都是同一个控件)

7、为了防止出现appView.subviews[0]这种情况出现 解决方法(xib变类):新建HMAppView类文件, xib/view控件连线变成HMAppView实例  view控件中的子控件连线 变成HMAppView的属性

新建HMAppView类继承UIView    xib中中的view控件指定类HMAppView类,然后拖view控件中的属性控件来连线

指定HMAppView后 可以看到 UIView appView =[[[NSBundle mainBundle] loadNibNamed:"HMAppView" owner:nil options:nil] lastObject];中的appView在程序执行完后 appView实际上是 HMAppView对象了  这时候UIView改成HMAppView appView

(appView.subviews[0] 可以写成appview.iconView方式了)

8、xib类数据设置:

子控件属性 数据变化-》 接收模型数据类-》设置数据方法

 9、xib连线按钮监听方法

代码创建按钮监听方法 需要加入button.tag 根据不同的tag值来获取对应这个按钮的数据

而xib类连线后不需要了 都自动传递自身点击button对象

删除viewController中的button属性 并取消其连线

10、xib类HMAppView自定义类方法appView 实例化对象

 

xib类 HMAppView对象接收HMAppInfo数据模型对象 对xib类子控件属性设置相应数据

11、xib类实例化对象,并初始化 [HMAppView appViewWithAppInfo]

//
//  HMViewController.m
//  01-应用程序管理
//
//  Created by apple on 14-8-14.
//  Copyright (c) 2014年 itcast. All rights reserved.
//

#import "HMViewController.h"
#import "HMAppInfo.h"
#import "HMAppView.h"

#define kAppViewW 80
#define kAppViewH 90
#define kColCount 3
#define kStartY   20

@interface HMViewController ()
/** 应用程序列表 */
@property (nonatomic, strong) NSArray *appList;
@end

@implementation HMViewController

- (NSArray *)appList
{
    if (_appList == nil) {
        _appList = [HMAppInfo appList];
    }
    return _appList;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    // 搭建界面,九宫格
    // 320 - 3 * 80 = 80 / 4 = 20
    CGFloat marginX = (self.view.bounds.size.width - kColCount * kAppViewW) / (kColCount + 1);
    CGFloat marginY = 10;

    for (int i = 0; i < self.appList.count; i++) {
        //// 0, 1, 2 => 0
        // 3, 4, 5 => 1
        int row = i / kColCount;
        
        //// 0, 3, 6 => 0
        // 1, 4, 7 => 1
        // 2, 5, 8 => 2
        int col = i % kColCount;
        
        CGFloat x = marginX + col * (marginX + kAppViewW);
        CGFloat y = kStartY + marginY + row * (marginY + kAppViewH);
        
//        // 从XIB来加载自定义视图
//        HMAppView *appView = [[[NSBundle mainBundle] loadNibNamed:@"HMAppView" owner:nil options:nil] lastObject];
//        HMAppView *appView = [HMAppView appView];
        HMAppView *appView = [HMAppView appViewWithAppInfo:self.appList[i]];
        
        // 设置视图位置
        appView.frame = CGRectMake(x, y, kAppViewW, kAppViewH);
        
        [self.view addSubview:appView];
        
//        // 实现视图内部细节
//        appView.appInfo = self.appList[i];
    }
}

@end

 

--------------

有智能提示的注释写法

/**

*/

---------------

MVC

控制器负责界面搭建和主流程

模型类存放数据

视图类负责显示

         // MVC流程: 控制器-》获取模型数据-》传递给视图 最后显示
     HMAppView *appView = [HMAppView appViewWithAppInfo:self.appList[i]]; // 设置视图位置 appView.frame = CGRectMake(x, y, kAppViewW, kAppViewH); [self.view addSubview:appView];

 

 ----------------

reveal使用和破解(文章中xcode插件使用有介绍)

与reveal功能类似的xcode自带的方法   Debug -> View Debugging -> Capture View Hierachy

--------------------

其他不重要的:

Xcode显示行号:xcode->preferences->textEditing->line numbers

能不暴露的属性都放到私有扩展里

 git的使用方法:

source control-> app程序-》switch to branches

 KVC  初始化模型对象 所以有 init方法初始化

视图对象用不到KVC的就只需要类方法初始化 创建视图对象

 

posted @ 2016-02-22 13:42  海龙王来了  阅读(360)  评论(0)    收藏  举报
友情链接:废钢破碎机  带式压滤机