博客> iOS cell与cell之间间隙
iOS cell与cell之间间隙
2017-12-12 22:12 评论:0 阅读:423 西单_夜未央
ios cell与cell之间间隙

1.设置假的间距,我们在tableviewcell的contentView上添加一个view,比如让其距离上下左右的距离都是10;这个方法是最容易想到的;

 F96793FD-AAAB-4C13-8BC8-D1C93CD68915.png

2.用UIContentView来代替tableview,然后通过下面这个函数来设置UICollectionViewCell的上下左右的间距;

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{  
    return CGSizeMake(ScreenWidth-20,150);  
}  
//协议中的方法,用于返回整个CollectionView上、左、下、右距四边的间距  
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section{  
    //上、左、下、右的边距  
    return UIEdgeInsetsMake(10, 10, 10, 10);  
}

3.用控件tableview,比如有十条数据,那就给tableview分十组,每组只放一条数据,也就是一个cell,然后设置UICollectionViewCell的head view和foot view来设置cell的间距,但是这个方法只能设置上下间距,如果想设置距离屏幕左右的距离,可以设置uitableview距离左右的距离;uitableview的style为UITableViewStyleGrouped;不然headview会浮动;

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{  
    return 10;  
}  

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{  
    return 1;  
}  

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{  
    return 50;  
}  

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{  
    return 10;  
}  

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{  
    return 0.00001;  
}  

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{  
    UIView *headView = [[UIView alloc]init];  
    headView.backgroundColor = [UIColor redColor];  
    return headView;  
}  

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{  
    static NSString *TableSampleIdentifier = @"cellStr";  
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:TableSampleIdentifier];  
    if (cell == nil) {  
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:TableSampleIdentifier];  
    }  
    return cell;  
}  

**优雅的方式

其实优雅的也是最简单的方法是直接让UITableView中的cell收缩一点,这样UITableView的底色就是分割线的颜色了,如上图就是橘色。这种方式只需要重写cell的setFrame方法即可**

-(void)setFrame:(CGRect)frame
{
    frame.origin.x = 10;//这里间距为10,可以根据自己的情况调整
    frame.size.width -= 2 * frame.origin.x;
    frame.size.height -= 2 * frame.origin.x;
    [super setFrame:frame];   
}

如果此时想要实现圆角也很简单,直接加上

self.layer.masksToBounds = YES;
self.layer.cornerRadius = 8.0;

 957D6ADA-41FD-48EE-8E4E-6A2C52686A11.png

收藏
0
sina weixin mail 回到顶部