Je voudrais donner un espace de 10 pixels dans chaque cellule de la vue tableau.
Comment je peux faire ça?
En ce moment toutes les cellules arrivent sans espace
Voici ma fonction cellulaire
- (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;
}
La méthode la plus simple consiste à augmenter la hauteur de vos cellules (3 points de haut et 7 points de haut) par rapport à l’image d’arrière-plan de votre cellule et de définir la couleur sous la forme [UIColor clearColor]
. Cela donnerait l’illusion que les cellules ont un intervalle de 10 points.
- (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;
}
Je suppose que le meilleur moyen consiste à ajouter une cellule de séparation pour chaque cellule normale. laissez chaque type de cellule faire son propre travail, et vous pouvez réutiliser le séparateur et la cellule normale ailleurs et ne devez plus modifier leur interface utilisateur. et vous pouvez personnaliser le séparateur à votre guise, et tous les calculs sont faciles, faciles comme ceci:
- (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;
}
}
Créez une vue de conteneur dans UITableviewCell-> ContentView. Vous conservez toutes vos sous-vues (étiquettes, boutons, vues) dans cette vue de conteneur. Maintenant, éloignez les limites du conteneur de la vue de contenu de la cellule en définissant les contraintes appropriées.
UITableviewCell-> ContentView-> YourCustomContainerView-> (toutes les sous-vues ). Éloignez les limites de YourCustomContainerView de ContentView.
Dans l'interface utilisateur pour UITableView, définissez la valeur d'attribut de hauteur de ligne 210. Et Dans l'interface utilisateur pour UITableViewCell, définissez la valeur d'attribut de hauteur de ligne 200.
Il mettra 10 px d'espace entre chaque cellule dans la table.
Si vous recherchez une solution simple, vous pouvez créer des sections pour toutes les cellules. Chaque section chaque rangée. Vous pouvez ajouter une hauteur de pied de page pour l'espacement entre les sections.
son si simple vous pouvez définir la mise en page automatique ou régler la hauteur de l'étiquette augmente également la hauteur de la cellule
make make numberOfSections = "Votre nombre de tableaux" et assurez-vous que chaque section ne contient qu'une seule ligne. Puis définissez headerView et sa hauteur.
- (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;
}
Augmentez la hauteur de la cellule .... Et masquez le séparateur et définissez la vue d'arrière-plan setBackgroundColor: [UIColor clearColor]]
Vous pouvez y parvenir en ayant 1 cellule par section et en définissant le style tableview sur Grouped
.
Ajoutez UIView (parentView) à ContentView. Ajoutez un espacement de 10 pixels du haut et du bas à la vue parent. Ajoutez le contenu de votre cellule dans parentView.
Si vous souhaitez pouvoir disposer de sections et ne souhaitez pas créer d'espace mystère au sein de vos cellules, créez une vue de collection au lieu d'une vue sous forme de tableau. Les vues de collection peuvent être définies uniquement sur la verticale et sur une colonne = vous pouvez également définir la hauteur de ligne minimale et l'espacement entre les éléments. Documents de développement Apple pour UICollectionView