UITableView使用中的一些刁专问题总结

简介: tableview中cell的系统分隔线问题(分隔线顶满或者缩短)
  • tableview中cell的系统分隔线问题(分隔线顶满或者缩短)


//tableview代理方法,设置系统cell的分隔线
 -(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
 {
     if (0 == indexPath.section) {
         if (0 == indexPath.row) {
             //cell分隔线缩短50
             if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
                 [cell setSeparatorInset:UIEdgeInsetsMake(0, 50, 0, 0)];
             }
         }else {
             //cell分割线顶满(分隔线加长)
             if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
                 [cell setSeparatorInset:UIEdgeInsetsZero];
             }
             if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
                 [cell setLayoutMargins:UIEdgeInsetsZero];
             }
         }
     }else if (1 == indexPath.section) {
         if (0 == indexPath.row) {
             if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
                 [cell setSeparatorInset:UIEdgeInsetsZero];
             }
             if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
                 [cell setLayoutMargins:UIEdgeInsetsZero];
             }
         }
     }else if (2 == indexPath.section){
         if (0 == indexPath.row) {
             if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
                 [cell setSeparatorInset:UIEdgeInsetsMake(0, 50, 0, 0)];
             }
         }
     }
 }


  • tableview下面出现多余的cell(有分割线影响界面)


//隐藏多余cell
 -(void)setExtraCellLineHidden: (UITableView *)tableView
 {
     UIView *view = [UIView new];
     view.backgroundColor = [UIColor clearColor];
     [tableView setTableFooterView:view];
 }


  • 例如:


你要隐藏某个UITableView里面多余的cell
UITableView *tabelDemo = [[UITableView alloc] init];
[self.view addSubview:tabelDemo];
然后直接调用就可以了
[self setExtraCellLineHidden:tabelDemo];


tableview的顶部高度多出的一部分(原因我猜有可能是因为系统自动布局计算了状态栏的高度)
//去掉tableview的顶部高度多出的一部分
self.edgesForExtendedLayout = UIRectEdgeNone;(这里self指当前控制器,只需要在viewDidl
Load调用)
效果图:


image.png


image.png

相关文章
|
3月前
|
开发者 iOS开发
介绍 UITableView 和 UICollectionView,它们的区别是什么?
介绍 UITableView 和 UICollectionView,它们的区别是什么?
58 0
UITableViewCell和UICollectionViewCell自适应高度
UITableView和UICollectionView想通,此处就已UITableView为例
185 0
UITableViewCell和UICollectionViewCell自适应高度
UITableView的创建
UITableView的创建
75 0
UICollectionview的使用详解
三个代理<UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateFlowLayout> 前两个的用法和tableView的很像,第三个是布局的协议。(注意:头视图尾视图都是由代理方法获得,而且需要写注册,缺少了也不行。) 注册以后,就不需要再去管理复用的问题了。这点就很简单。这个如果用好的话,会非常的简单。