我可以在UITableViewCell之间留出空间吗?

时间:2016-04-05 06:15:57

标签: ios objective-c iphone uitableview

我想在每个表视图单元格中提供10个像素的空间。

我怎么能这样做?

现在所有的细胞都没有空间

enter image description here

这是我的手机功能

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

  static NSString *cellIdentifier = @"MyOrderCell";
  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

  NSLog(@"%d",indexPath.row);


 if (cell == nil)
 {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
    cell.backgroundColor = [UIColor clearColor];
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
 }



 UILabel *orderid = (UILabel*)[cell.contentView viewWithTag:101];
 orderid.textColor = kMaroonColor;
 orderid.font = [UIFont fontWithName:kFontName size:kProductFont];
 orderid.text = [NSString stringWithFormat:@"ORDER ID : %@",contentDict[@"order_id"]];

 UILabel *date = (UILabel*)[cell.contentView viewWithTag:102];
 date.textColor = kMaroonColor;
 date.font = [UIFont fontWithName:kFontName size:kProductFont];

 NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
 [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
 NSDate *date1 = [dateFormat dateFromString:contentDict[@"order_date"]];

 // Convert date object to desired output format
 [dateFormat setDateFormat:kDateFormat1];
 NSString *dateStr = [dateFormat stringFromDate:date1];
 date.text = dateStr;

 NSArray *products = contentDict[@"products"];
 UILabel *noOfProducts = (UILabel*)[cell.contentView viewWithTag:103];
 noOfProducts.textColor = kMaroonColor;
 noOfProducts.font = [UIFont fontWithName:kFontName size:kProductFont];
 noOfProducts.text= [NSString stringWithFormat:@"NO OF PRODUCTS : %d",products.count];


 NSArray *totalArray = contentDict[@"totals"];
 NSDictionary *totalDict = [totalArray objectAtIndex:0];
 UILabel *price = (UILabel*)[cell.contentView viewWithTag:104];
 price.textColor = [UIColor blackColor];
 price.font = [UIFont fontWithName:kFontName size:kProductFont];
 NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"\u20B9 %@",totalDict[@"total"]]];
 [attributeString addAttribute:NSForegroundColorAttributeName
                        value:kGreyColor
                        range:NSMakeRange(0, 1)];
 price.attributedText = attributeString; 

 UIView* shadowView = [[UIView alloc]init];
 [cell setBackgroundView:shadowView];
 // border radius
 [shadowView.layer setCornerRadius:10.0f];

 // border
 [shadowView.layer setBorderColor:[UIColor lightGrayColor].CGColor];
 [shadowView.layer setBorderWidth:1.5f];

 // drop shadow
 [shadowView.layer setShadowColor:[UIColor blackColor].CGColor];
 [shadowView.layer setShadowOpacity:0.8];
 [shadowView.layer setShadowRadius:3.0];
 //[cell.layer setShadowOffset:CGSizeMake(5.0, 5.0)];
 [tableView setSeparatorInset:UIEdgeInsetsMake(10, 10, 10, 10)];
 [cell setLayoutMargins:UIEdgeInsetsMake(10, 10, 10, 10)];
 //    [tableView setIndentationWidth:10];
 //    [tableView setIndentationLevel:2];

 //tableView.separatorStyle=UITableViewCellSeparatorStyleSingleLine;
 return cell;
}

13 个答案:

答案 0 :(得分:7)

最简单的方法是让你的细胞高度比你的细胞背景图像高一些(从顶部开始3pt,从底部开始7pt),并使颜色为[UIColor clearColor]。这会产生一种错觉,即细胞间的间隙为10 pt。

答案 1 :(得分:4)

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
      // number of cells or array count
      return 10;
    }

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

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

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
    {
        UIView *view = [UIView new];
        [view setBackgroundColor:[UIColor clearColor]];
        return view;
    }

答案 2 :(得分:2)

在UITableviewCell-> ContentView中创建容器视图。您将所有子视图(标签,按钮,视图)保留在该容器视图中。现在通过设置适当的约束来设置容器的边界远离Cell的contentview。

  

UITableviewCell-> ContentView-> YourCustomContainerView-> (所有   子视图)。将YourCustomContainerView的边界设置为远离   内容查看。

答案 3 :(得分:2)

在UITableView的用户界面中设置行高度属性值210。 在UITableViewCell的用户界面中设置行高度属性值200。

它将在TableView

中的每个单元格之间放置10个px空间

答案 4 :(得分:2)

我想最好的方法是为每个普通单元格添加一个分隔符单元格。让每种单元格完成自己的工作,并且可以重复使用分隔符和普通单元格,而不需要再次更改其UI。并且您可以根据需要自定义分隔符,所有计算都很容易,如下所示:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return dataArray.count * 2;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    if (indexPath.row % 2 == 0) {
        CellForData *cell = [tableView dequeueReusableCellWithIdentifier:@"dataCellID" forIndexPath:indexPath];
        return cell;
    }else{
        CellForSeparation *cell = [tableView dequeueReusableCellWithIdentifier:@"separatorCellID" forIndexPath:indexPath];
        return cell;
    }
}

答案 5 :(得分:1)

如果是简单的解决方案,您可以为所有单元格创建部分。每一节每一行。您可以为节之间的间距添加页脚高度。

答案 6 :(得分:1)

它很简单 您可以设置自动布局或调整标签的高度 同时也增加了细胞的高度

答案 7 :(得分:1)

只需输入numberOfSections ="你的数组计数"并使每个部分只包含一行。然后定义headerView及其高度。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return yourArry.count;
}

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

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

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView *v = [UIView new];
    [v setBackgroundColor:[UIColor clearColor]];
    return v;
}

答案 8 :(得分:1)

增加单元格高度....并隐藏分隔符并设置背景视图setBackgroundColor:[UIColor clearColor]]

答案 9 :(得分:0)

你可以通过每节一个细胞来实现这一目标。将tableview样式设置为Grouped

答案 10 :(得分:0)

如果您希望能够拥有部分并且不想在单元格中创建神秘空间,请创建集合视图而不是表格视图。集合视图可以设置为仅垂直,仅一列=您还可以设置最小线高和插入间距。 Apple Developer Docs for UICollectionView

答案 11 :(得分:0)

将UIView(parentView)添加到ContentView。从顶部和底部添加10个pixcel间距到parentView。在parentView中添加单元格内容。

答案 12 :(得分:0)

// I found this on internet hope this will help some future seeker
// This method should implement in custom class
// This for give space between row

override var frame: CGRect {
    get {
        return super.frame
    }
    set (newFrame) {
        var frame =  newFrame
        frame.origin.y += 4
        frame.size.height -= 2 * 5
        super.frame = frame
    }
}