1、01课前介绍

  • 第一个任务:类配置界面(0·19)
  • 第二个任务:qq(3·20)
  • 第三个任务:应用管理(4·19)

2、静态单元格的使用

  • 通知和代理的共同点和不同的
    • 共同点:对象之间的通信
    • 不同的:代理(一对一),通知(一对多)
  • 如何监听设备旋转,电池电量改变,贴近脸部(近距离传感器)等
  • 静态单元格
    • (10:20)静态单元格和动态单元格的分别 使用静态单元格:必须使用UITableViewControler
    • (17:30)代码演示,如果使用UIViewContontroler,将“属性”->“Content”->改为“Static”,就会报错:Illagal Configuration:Static table views are only vaild ...
    • (21:30)UITableViewControler创建静态单元格演示 3、QQ好友(动态单元格)
  • 嵌套单元格
  • 思路:
    • 拖拽资源(plist,ico)
    • 懒加载
      • CFriend
        • initwWthDict
        • frameWithDict
      • CGroup
        • initwWithDict
        • groupWithDict
      • cell(tbds)

4、自定义单元格

  • + (instancetype)friendWithTableView:(UITableView *) tableView;
  • - (void)setFriendModel:(CZFriend *)friendModel;
  • 隐藏状态栏(hsb)

5、设置组的HeaderView

  • 思路:根据数据创建headerview
  • 思路:返回hearview的string接口不够丰富,使用创建uiview的方法也可以实现,不过这样不可以重用,而且需要自己写代码维护!
  • 思路:使用系统提供的接口,可以重用,类似cell的方法,使用返回header view(tvhf)的接口
  • (15:50)思路:代码尽量解耦,减少在c端的代码,使用文件自定义headerview(tvhfd)
  • 思路:自定义headerview,将重用代码抽离 思路:希望在创建子控件的时候,同时创建子控件(初始化按钮和label)
  • 思路:重写Set方法,将model赋值给子控件(一般是常变的变量,例如text,color)
    • 赋值数据
    • 设置按钮上的文字
    • 设置label上面的文字
    • 根据bounds设置frame(按钮和Label),问题是没有预期的结果,不过bounds都是0,坐标不准
    • 思路:在刚刚创建好的headerview的frame为0,但是程序运行的时候,会有frame,是因为tableview会用到headerview,然后tableview会根据一些参数去设置header的frame
    • 思路:简单来说,就是使用bounds的时机过早。使用layoutsubviews保证headerview的frame已经使用。

7.设置组的Header View03(1)

  • 思路:设置headerview的frame及子控件的配置。- (void) layoutSubviews,当Hearerview的frame发生改变,就会调用
  • (14:40)思路:按钮文字颜色(黑->白),设置按钮的对齐方式
  • 思路:设置按钮默认时和高亮时的背景图
  • 思路:怎么用UI实现按钮距离左边和title的边距
  • 思路:怎么用代码实现上述的功能。设置按钮中内容的整体左对齐。设置按钮内容的左边距(0,10,0,0),设置按钮标题的左边距(0,5,0,0)
  • 思路:实现分组的展开和合并,由于是根据按钮的点击事件确定rowsinsection返回0(合并)还是XX.counts(展开)。要监听按钮的点击事件
  • 因为rowsinsection不仅是你的流程会执行,整个UITableview也会不停是执行,所以为了避免操作无效(被控制器回滚了)。
  • 思路:使用了状态标志位的方法,你的命令(点击事件)置位状态
  • 思路:仅置位状态,没法更新状态。因此需要刷新数据
  • 思路:headerview无法刷新数据,使用代理,请控制器做代理帮忙刷新
  • 思路:因为一个组的刷新,是reload所有的数据,效率太低!局部刷新,局部刷新需要Set变量,因此需要标记那个tableview需要刷新,在Hearderview创建的标记tag.将tag赋给Set
  • 思路:由于动态Left太丑。使用fade,淡入淡出效果!

8.设置组的Header View04(1)

  • 思路:点击按钮时候,图片需要旋转。图片旋转需要拿到按钮的图片变量,并改变变量transform。
  • 思路:当使用代理的时候,点击按钮,旋转,然后马上又旋转回去了!不符合要求。原因:在你的点击事件里面,调用了reload,并且马上转动按钮,但是你的刷新流程还没有完成,而你已经完成了转动了,当重新刷新完数据,hearderview也更新完成了,但你重新加载了图片(默认向下)!动作被回滚!
  • 思路:使用点击事件里面先后执行翻转和刷新动作时,会实现回滚,因此不能实现效果使用,使用didMoveToSuperview,当Headerview加载完成的时候执行! 疑问:其实可以在layoutSubviews里面根据状态来决定旋转方向
  • 思路:当旋转的时候,图标会变长
  • 思路:当保证翻转的时候不变长,图标会被截断
  • 思路:展开的状态不对问题,重用单元格状态保留的问题
  • 思路:判断好友是否是会员,修改他的名词为红色名称,否则黑色
  • 思路:为啥不使用xib,而是硬编码

9(01).懒加载,创建cell

  • 获取模型数据
  • 创建cell
    • 手工创建
    • 利用xib加载
    • mainstroyboard创建一个ID的cell,直接重用,ID不能重复使用(storyboard里面的cell,不能有同一个ID),不然报错
    • 自定义cell
    • 多重cell
  • 把模型赋值给cell
  • 返回cell 9(0)拖数据,加载数据,创建文件
  • 可以在project的属性哪里,添加类的prefix 10
  • 点击按钮弹出一个label
  • 思路:调整tableview的行高,在storyboard里面,修改row height没有用
  • 思路:为btn添加事件
  • 事件完成两个事:禁用按钮,标记是否已经被禁用
  • 思路:下载按钮状态异常。点击过的按钮,后面重用的cell保留了。需要更新,并且在Set里面判断按钮是否禁用了

11。弹出label

  • 要控制器做代理,帮忙创建一个label并显示到tableview
  • 创建label
    • 设置文字
    • 设置背景色
    • 文字颜色
      • 设置label大小
    • 修改Label文字大小
    • 设置label透明度
    • 居中显示
    • 圆角显示
  • 加入到tableview里面
  • 动画显示uilabel 0 - > 0.6 -> 0
  • 从view删除uilabel

12.bug fix

  • 思路:label弹出的位置有问题
  • 思路:view是tableview,当tableview滚动的时候,Label会跟着滚动
  • 思路:加入到app的窗口上去。窗口是固定的
  • 控件不可见
    • frame属性为0,或位置不对
    • hidden = YES
    • 是否添加到父控件中
    • 被其他控件挡住了
    • 检查父控件是否也有这种问题
  • layoutSubviews
    • 要继承父类的方法,[super layoutSubviews]

13.kvc略

Copyright © 翻这个墙 2016 all right reserved,powered by Gitbook该文件修订时间: 2016-03-30 20:17:09