Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I give space between UITableViewCell

I would like to give space of 10 pixel in each table view cell.

How I can do that?

Right now all cells are coming without any space

enter image description here

Here is my cell function

- (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;
}
like image 647
Tarun Seera Avatar asked Apr 05 '16 06:04

Tarun Seera


People also ask

How do I change cell height in Swift?

To change the height of tableView cell in ios dynamically, i.e resizing the cell according to the content available, we'll need to make use of automatic dimension property.


8 Answers

- (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;
    }
like image 164
Himanshu jamnani Avatar answered Oct 03 '22 22:10

Himanshu jamnani


just make numberOfSections = "Your array count" and make each section contains only one row. And then define headerView and its height.

- (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;
}
like image 44
Abhinandan Pratap Avatar answered Oct 03 '22 22:10

Abhinandan Pratap


The most simple way would be make your cells height a bit bigger(3pt from top and 7pt from the bottom) than that of your cell's background image, and making the colour as [UIColor clearColor]. That would give the illusion that the cells have a 10 pt gap in between.

like image 29
Saheb Roy Avatar answered Oct 04 '22 00:10

Saheb Roy


In the user interface for UITableView set Row Height Attribute value 210. and In the user interface for UITableViewCell set Row Height Attribute value 200.

It will put 10 px space between each cell in the TableView

like image 20
Yagnesh Dobariya Avatar answered Oct 03 '22 23:10

Yagnesh Dobariya


Create a container view inside UITableviewCell->ContentView. You keep all your subviews(labels,buttons,views) inside that container view. Now set container's boundaries away from the Cell's contentview by setting appropriate constraints.

UITableviewCell->ContentView->YourCustomContainerView-> (all subviews). Set YourCustomContainerView's boundaries away from the ContentView.

like image 32
Suresh Kumar Durairaj Avatar answered Oct 03 '22 23:10

Suresh Kumar Durairaj


I guess the best way is to add a separator cell for each normal cell. let each kind of cell do its own job, and you can reuse the the separator and normal cell else where and need not to change their UI again. and you can customize the separator as you want, and all the calculations are easy, easy like this:

- (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;
    }
}
like image 38
MudOnTire Avatar answered Oct 03 '22 23:10

MudOnTire


If for a simple solution you can create sections for all cells. Each section each row. You can add a footer height for spacing between sections.

like image 42
Chetan Avatar answered Oct 03 '22 22:10

Chetan


Increase the cell Hight.... And hide the separator and set the background view setBackgroundColor:[UIColor clearColor]]

like image 35
fathima Avatar answered Oct 03 '22 22:10

fathima