项目笔记

 

 

百思第6天

1.对控制器的view懒加载,避免同时加载多个view耗性能

  • 单独提取一个通过index来添加view的方法,当有相同的view时就返回不添加

2.点击控制器顶部时,tableView滚动到最前面去

  • 为什么精华的全部按钮没有了这个功能
    • 一般情况下系统默认的self.tableView.scrollsToTop = YES;所以点击顶部有自动到最上面的功能,但是精华中scrollView太多了所以功能消失了
  • 解决方案:自定义状态栏,添加一个隐藏的控制器的顶部窗口,当点击时调用hitest方法监听点击
  • 封装block成为小型框架,只要把block要设置的代码传给,不需要关心内部是怎么实现的,控制器的声明实现都在.m文件中,

    • block的说明:在XMGTopViewController声明-->在XMGTopWindow中给属性赋值方便viewController调用
  • block中封装的内容:

    • 提取所有在window中的application.keywindow,比较所有的子控件是否在window中
    • 便利所有子控件,通过调用scrollview的偏移量的改变来使得scrollview到答顶端,发现点击时所有的scrollView都会到达顶部

补充

1.触碰级别
  1.window级别越高,越显示在顶层.如果级别一样,越后面显示的越显示在顶层   
    UIWindowLevelAlert > UIWindowLevelStatusBar > UIWindowLevelNormal
    2.要想window里面的内容跟随屏幕旋转,那么必须设置window的rootViewController
    3.状态栏的样式和显示隐藏由最顶层window的控制器决定:所以一定要设置前面2个方法来控制状态栏的状态,不设置系统会自动设置
      1> - (BOOL)prefersStatusBarHidden : 显示和隐藏
      2> - (UIStatusBarStyle)preferredStatusBarStyle : 白色和黑色

2.判断量控件的关系

BOOL result = CGRectIntersectsRect(rect1, rect2); 判断rect1与rect2是否交叉有重叠(前提在同一个坐标系)
CGRectContainsRect(CGRect rect1, CGRect rect2)  : 判断rect1是否包含了rect2
CGRectContainsPoint(CGRect rect, CGPoint point) : 判断rect是否包含了point
//转换坐标原点(将传入的矩形框参数,从【self.redView坐标系左上角为坐标原点】的(50,50,60,60) 转换到 【self.blueView坐标系坐标原点后的坐标】)rect为blueView左上角到这矩形的位置尺寸
CGRect rect = [self.redView convertRect:CGRectMake(50, 50, 60, 60) toView:self.blueView]  
CGRect rect1 = [self convertRect:self.bounds toView:nil];:当toView传空时表示为window
posted @ 2016-02-23 16:40  谢云  阅读(111)  评论(0编辑  收藏  举报