美文网首页
UITableView进阶注意点

UITableView进阶注意点

作者: imy博 | 来源:发表于2016-04-10 00:01 被阅读81次

附下面几张图有助于理解tableView的内容视图和其相应属性的一些关系:

Snip20160409_22.png Snip20160409_23.png Snip20160409_23.png Snip20160409_24.png Snip20160409_25.png Snip20160409_26.png Snip20160409_27.png Snip20160409_28.png Snip20160409_29.png Snip20160409_30.png

首先要理解一些概念

  • 可视化视图是我们能看见的,内容视图是我们看不见的,默认情况下内容视图的左上角和控件的可视化视图的左上角是保持一致的,内容视图可以理解是无限大的,默认情况下坐标系的原点是和控件的左上角坐标系原点一直的,当然我们也可以自己改变内容视图的原点位置(让内容视图的和控件的不一致)
  • frame是以父控件的内容视图的左上角为原点的,而bounds是以自己的左上角为原点的(bounds, x,y永远是0),默认情况下的内容视图的原点是和控件的可视化视图的左上角原点重合的(frame和bounds都适用),center也是以父控件的内容视图的左上角为原点的

  • 注意:一定要区别清楚frame,bounds,center的参考系

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    UIView *redView = [[UIView alloc] init];
    
    redView.frame = CGRectMake(50, 50, 200, 200);
    
    redView.backgroundColor = [UIColor redColor];
    
    [self.view addSubview:redView];
    
    _redView = redView;
    
    UISwitch *switchView = [[UISwitch alloc] init];
    [_redView addSubview:switchView];
}


- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{//在这个方法中修改了redView自己内容视图坐标原点的y值
    CGRect bounds = _redView.bounds;
    bounds.origin.y += 10;
    _redView.bounds = bounds;
}

  • UIViewController和UITableViewController的view是有区别的,区别之一在于他们的frame,UITableViewController的view是在状态条的下面,而UIViewController的view的frame则包括了状态条,但状态条并不是它的子控件

UITableView进阶注意点

  • UITableView的高度是由其内容决定的(可以理解是内容视图,注意和可视化视图区分),UITableView的内容视图的组成部分包括了UITableviewCell、tableView的tableFooterView和tableHeaderView,当我们将一个控件添加到tableView上面的时候,其实是将其添加到tableView的内容视图的上面,因为当一个控件添加到父控件上的时候我们看到的可视化区域是由该控件的frame决定的,而frame前面已经提到了,它的参考系是以父控件的内容视图的左上角为原点的,也就是添加的子控件是在以内容视图的左上角为原点的参考系中,因此若我们改变了tableView的内容视图的,子控件会随着内容视图的变化而变化.

  • 内容视图有几个属性contentInset,contentOffset,contentSize等等,这些属性都是作用在内容视图上面的,例如contentSize指的就是内容视图的尺寸(宽、高),contentInset指的就是内容视图的周边的间距(内边距),contentOffset指的就是内容视图的偏移量(注意是tableView的frame的坐标 - tableView内容视图的左上角坐标, contentInset则是tableView内容视图的各个边缘,距离tableView的最大正常间距,超过最大正常间距将会自动回到最大正常间距的位置)

注意:将一个子控件添加到父控件中,那么子控件就成为父控件的内容视图的一部分了

相关文章

  • UITableView进阶注意点

    附下面几张图有助于理解tableView的内容视图和其相应属性的一些关系: 首先要理解一些概念 可视化视图是我们能...

  • UITableView

    UITableView性能优化 UITableViewController的注意点 self.view和self....

  • UITableView 使用注意

    在使用UITableView 添加tableHeaderView 的时候 有一个注意点就是 再添加tableHea...

  • UITableViewCell

    UIAlertView 和 UITableView局部刷新 注意点:获取某一行的时候使用 Tag UITableV...

  • 关于和UITableView的注意点

    UITableView是我们最常用的视图,在做这个东西的时候,我遇到的几种情况:1,我们往往写不确定cell高度的...

  • 关于UITableView流畅滑动几个注意点

    文章来源于:Perfect smooth scrolling in UITableViews 南峰子的技术博客 手...

  • UITableView之cell的复用及注意事项

    UITableView之cell的复用及注意事项 作为iOS最经典的UI控件,熟练掌握UITableView是每个...

  • UITableView Tips 高级进阶

    1.cell 高度自适应 // 设置 estimatedRowHeight 大于零 self.tableView...

  • iOS开发-UITableView进阶

    本文我将为各位同学提到 UITableView如何显示数据(基础) 初识MVC(重点&需要时间积累) UITabe...

  • QHP_02UITableView

    在开发过程中需要注意的地方UITableView的性能优化 cell的循环使用方式1: UITableView性能...

网友评论

      本文标题:UITableView进阶注意点

      本文链接:https://www.haomeiwen.com/subject/ypeblttx.html