1124

来源:互联网 发布:新网域名添加白名单 编辑:程序博客网 时间:2024/05/10 06:19

storyboard文件的认识


  • 用来描述软件界面
  • 默认情况下,程序一启动就会加载Main.storyboard
  • 加载storyboard时,会首先创建和显示箭头所指的控制器界面

IBAction和IBOutlet


  • IBAction:
    • 本质就是void
    • 能让方法具备连线的功能
  • IBOutlet
    • 能让属性具备连线的功能


storyboard连线容易出现的问题


  • 连接的方法代码被删掉,但是连线没有去掉
    • 可能会出现方法找不到错误
    • unrecognized selector sent to instance
  • 连接的属性代码被删掉,但是连线没有去掉
    • setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key


UIViewController(控制器)的认识


  • 一个控制器负责管理一个大界面
  • 控制器负责界面的创建、事件处理等

类扩展


  • 格式
@interface 类名()/** 属性、方法的声明 */@end
@interface 类名()/** 属性、方法的声明 */@end
  • 作用
    • 为某个类增加额外的属性和方法声明
    • 可以写在.h和.m文件中


项目属性

  • Product Name
    • 软件名称、产品名称、项目名称
  • Organization Name
    • 公司名称、组织名称
  • Organization Identifier
    • 公司的唯一标识
    • 一般是公司域名的反写,比如com.520it
  • Bundle Identifier
    • 软件的唯一标识
    • 一般是Organization Identifier + Product Name


添加项目到文件的正确选则

Alt Image Text

九宫格计算思路

  • 利用控件的索引index计算出控件所在的行号和列号
  • 利用列号计算控件的x值
  • 利用行号计算控件的y值


例如

    //商品的宽高    CGFloat shopW = 90;    CGFloat shopH = 110;    //一行要展示的列数    int cols = 3;    //每一列之间的间距    CGFloat colMargin = (self.shopsView.frame.size.width - cols * shopW) / (cols - 1);    //每一行之间的间距    CGFloat rowMargin = 50;    //创建一个父控件    ShopView * shopView = [ShopView shopView];    //商品的索引    NSInteger index = self.shopsView.subviews.count;    // 给商品控件传递商品模型    shopView.shop = self.shops[index];    //商品的x值    NSUInteger col = index % cols;    CGFloat shopX = col * (colMargin + shopW);    //商品的y值    NSUInteger row = index / cols;    CGFloat shopY = row * (rowMargin + shopH);    shopView.frame = CGRectMake(shopX, shopY, shopW, shopH);

HUD

  • 其他说法:指示器、遮盖、蒙板
  • 半透明HUD的做法
    • 背景色设置为半透明颜色

定时任务

  • 方法1:performSelector
// 1.5s后自动调用self的hideHUD方法[self performSelector:@selector(hideHUD) withObject:nil afterDelay:1.5];
  • 方法2:GCD
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{    // 1.5s后自动执行这个block里面的代码    self.hud.alpha = 0.0;});
  • 方法3:NSTimer
// 1.5s后自动调用self的hideHUD方法[NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(hideHUD) userInfo:nil repeats:NO];// repeats如果为YES,意味着每隔1.5s都会调用一次self的hidHUD方法

常见问题

  • 项目里面的某个.m文件无法使用
    • 检查:Build Phases -> Compile Sources
  • 项目里面的某个资源文件(比如plist、音频等)无法使用
    • 检查:Build Phases -> Copy Bundle Resources

模型

  • 什么是模型?
    • 专门用来存放数据的对象
    • 一般都是一些直接继承自NSObject的纯对象
    • 内部会提供一些属性来存放数据

一个控件看不见有哪些可能?

  • 宽度或者高度其实为0
  • 位置不对(比如是个负数或者超大的数,已经超出屏幕)
  • hidden == YES
  • alpha <= 0.01
  • 没有设置背景色、没有设置内容
  • 可能是文字颜色和背景色一样
0 0
原创粉丝点击