03-UI进阶(1)

0609-UIPickerView键盘处理

1. 01-聊天布局01-图片拉伸

pickerView选中某行的办法(跟tableview类似)

//返回第component列被选中的某一行的行号
- (NSInteger)selectedRowInComponent:(NSInteger)component;
// 这个和下面都是选中某一行,但是这个不会触发下面那个代理方法选中后的动作
- (void)selectRow:(NSInteger)row inComponent:(NSInteger)component animated:(BOOL)animated;
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component;

2. 04-kvc实现原理

// 利用KVC字典转模型
 [flag setValuesForKeysWithDictionary:dict];

KVC实现原理:

  1. 遍历所有的key得到key的值name
  2. 去模型查找有没有setName:方法,有的话直接赋值 setName:name
  3. 假如没有该set方法,就去模型中查找有没有_name属性,有的话_name = name
  4. 假如没有_name,就去模型中查找有没有name属性
  5. 假如还是没有,就会报错

注:这里有个开发的小技巧
上面的第二步去找set方法时,可以偷梁换柱改变参数的类型,只要参数名字一样即可,比如该视频中的XMGFlag.m文件的45行代码

3. 06-生日键盘业务逻辑处理

定义控件时strong和weak的区别:
当是strong修饰时可以直接
self.label = [UILabel new];
当是weak修饰时则需要

UILabel *label = [UILabel new];
_label = label;

这时候若像第一种那样写则会导致[UILabel new]创建的Label被提前释放

4. 09-项目中的常见文件

  1. 关于info.plist文件:
  • BundleName不能超过六个汉字(12个字节)否则会显示省略号
  • “Versions”才是版本号;“Build”是开发人员内部的版本
  • 注意怎么得到info.plist的真实的key值
  1. 关于PCH文件补充
    配置PCH: buildSetting -> prefix ->
    PCH文件常见的作用:
  • 存放一些公用的宏
  • 存放一些公用的头文件
  • 自定义Log
#ifdef __OBJC__ //这句代码是告诉工程只有OC文件才引入
  #define ABC 10
  #import "UIImage+Image.h"
  #ifdef DEBUG // 调试阶段
      // 宏里面可变参数:...
      // 函数中可变参数: __VA_ARGS__   VA代表函数  ARGS代表参数
      #define XMGLog(...)  NSLog(__VA_ARGS__)
  #else // 发布阶段
      #define XMGLog(...)
  #endif
#endif

由于PCH文件会在每个文件中都引入所以一旦项目很大的时候会导致预编译时间很长,这也是官方不推荐的原因

0610-控制器创建导航控制器

1. 01-uiapplication

状态栏默认是给控制器管理,可以在plist文件最后一个选项里改为给application管理

你可能感兴趣的:(03-UI进阶(1))