2016-04-05 5 views
6

Я бы хотел выделить 10 пикселов в каждой ячейке таблицы.Могу ли я предоставить пространство между UITableViewCell

Как я могу это сделать?

Сейчас все клетки приходят без пространства

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; 
} 
+0

[Когда вы задаете вопрос о проблеме, вызванной вашим кодом, вы получите гораздо лучшие ответы, если вы предоставите код, который люди могут использовать для воспроизведения проблемы] (http://stackoverflow.com/help/mcve) – swiftBoy

+1

Конечно, пусть я тоже прошел мимо кода –

+0

сделать ячейку 10px выше и сместить содержимое вниз, если вы хотите простое место сверху. Добавить заголовок. – gvuksic

ответ

6

Самый простой способ будет сделать ваши клетки высота немного больше (3pt от сверху и 7 пунктов снизу), чем фоновое изображение вашей ячейки, и делает цвет как [UIColor clearColor]. Это создаст иллюзию, что между ячейками имеется промежуток в 10 pt.

+0

Будет ли она работать с автомаршрутом, я бы хотел дать фоновый тень в одно и то же время и пространство должен появиться после закрытия тени, не включая shaddow –

+1

да, вы можете это сделать, просто создайте тень вместе с изображением. после изображения, поместите прокладку. –

1

Если для простого решения вы можете создавать разделы для всех ячеек. Каждый раздел каждой строки. Вы можете добавить высоту нижнего колонтитула для разделения между разделами.

+0

Создание раздела для каждой ячейки не кажется хорошим, но да, его последнее решение –

1

его так просто вы можете установить автоматическое расположение или настроить Hight этикетки , а также увеличивает Hight клетки

+0

, пожалуйста, добавьте дополнительную информацию, это легко понять для вопросителя –

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; 
} 
+0

Мне нужна фоновая тень в то же время, как и на снимке экрана, который я предоставляю –

+0

ok np call это в методе CellForRowatIndexPath –

2

Создать представление контейнера внутри UITableviewCell-> ContentView. Вы сохраняете все подзоны (метки, кнопки, виды) внутри этого контейнера. Теперь установите границы контейнера вдали от содержимого содержимого Cell, установив соответствующие ограничения.

UITableviewCell-> ContentView-> YourCustomContainerView-> (все подвиды). Настройте границы YourCustomContainerView вдали от содержимого ContentView 1 .

+0

Это не работает, если вы используете дополнительный вид. Вид аксессуаров находится в представлении содержимого и не будет добавлен в представление вашего контейнера. –

+0

По-видимому, эта идея предназначена только для пользовательских ячеек. Точно так же, как тот, который делится с вопросом. – Suresh

+0

Пользовательские ячейки могут иметь дополнительные виды. –

2

В пользовательском интерфейсе для UITableView устанавливается высота строка значения атрибута 210. и В пользовательском интерфейсе для UITableViewCell высоты строки установить значение атрибут 200.

Это поставит 10 пикселей пространства между каждой ячейкой в ​​TableView

3
- (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; 
    } 
1

Увеличить клетку Hight .... и скрыть разделитель и установить фон вид setBackgroundColor: [UIColor clearColor]]

2

я думаю лучший способ - добавить разделительную ячейку для каждой нормальной ячейки. пусть каждый вид ячейки выполняет свою собственную работу, и вы можете повторно использовать разделитель и нормальную ячейку, где и не нужно менять свой интерфейс. и вы можете настроить разделитель, как вы хотите, и все вычисления легко, просто, как это:

- (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; 
    } 
} 
0

Вы можете добиться того, что при наличии 1 клетку в разделе & набора стиля Tableview к Grouped.

0

Если вы хотите иметь разделы и не хотите создавать тайное пространство внутри своих ячеек, создайте представление коллекции вместо представления таблицы. В коллекции видов можно установить только вертикальную ориентацию и только один столбец = вы также можете установить минимальную высоту линии и интерэйт-интервал.Apple Developer Docs for UICollectionView

0

Добавить UIView (parentView) в ContentView. Добавьте 10 пиксельных интервалов сверху и снизу к parentView. Добавьте содержимое ячейки в parentView.

Смежные вопросы