2016-04-05 5 views
6

Ich möchte Raum von 10 Pixel in jeder Tabellenansicht Zelle geben.Kann ich Raum zwischen UITableViewCell geben

Wie kann ich das tun?

Gerade jetzt alle Zellen ohne Raum kommen

enter image description here

Hier ist meine Zelle Funktion

- (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

[Wenn Sie eine Frage zu einem Problem stellen, das von Ihrem Code verursacht wird, erhalten Sie viel bessere Antworten, wenn Sie Code bereitstellen, den Benutzer verwenden können, um das Problem zu reproduzieren] (http://stackoverflow.com/help/mcve) – swiftBoy

+1

Sicher lassen ich hinter dem Code auch –

+0

Zelle 10px höher machen und Inhalte nach unten verschieben, wenn Sie nur Platz auf der Oberseite wollen Kopfzeile hinzufügen – gvuksic

Antwort

6

Die einfachste Art und Weise Ihre Zellen Höhe etwas größer machen würde (3pt aus oben und 7pt von der Unterseite) als das Hintergrundbild Ihrer Zelle, und die Farbe als [UIColor clearColor]. Das würde die Illusion vermitteln, dass die Zellen eine 10-pt-Lücke dazwischen haben.

+0

Funktioniert es mit automatischem Layout, möchte ich den Hintergrundschatten gleichzeitig und den Raum geben muss nach shadow ende nicht einschließlich shaddow kommen –

+1

ja du kannst das tun, einfach den schatten zusammen mit dem bild erstellen. Nach dem Bild legen Sie die Polsterung. –

1

Wenn für eine einfache Lösung können Sie Abschnitte für alle Zellen erstellen. Jeder Abschnitt jeder Zeile. Sie können eine Fußhöhe für Abstände zwischen Abschnitten hinzufügen.

+0

Erstellen von Abschnitt für jede Zelle scheint nicht gut, aber ja seine letzte Lösung –

1

seine so einfach Sie das automatische Layout einstellen oder die Höhe des Etiketts als auch die Höhe der Zelle

+0

fügen Sie bitte weitere Informationen hinzu, es ist leicht zu verstehen für Fragesteller –

1

nur numberOfSections = „Ihr Array count“ machen und jeden Abschnitt machen enthält nur eine erhöht einstellen Reihe. Und dann definieren Sie HeaderView und seine Höhe.

- (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

Ich brauche den Hintergrund Schatten zur gleichen Zeit, genau wie der Screenshot ich –

+0

ok np Anruf zur Verfügung stellen es in CellForRowatIndexPath-Methode –

2

Erstellen Sie eine Containeransicht in UITableviewCell-> ContentView. Sie behalten alle Ihre Unteransichten (Beschriftungen, Schaltflächen, Ansichten) in dieser Containeransicht. Setzen Sie jetzt die Grenzen des Containers weg von der Inhaltsansicht der Zelle, indem Sie entsprechende Einschränkungen festlegen.

UITableviewCell-> ContentView-> YourCustomContainerView-> (alle Subviews). Legen Sie die Grenzen von YourCustomContainerView von ContentView fest.

+0

Dies funktioniert nicht, wenn Sie eine Zubehöransicht verwenden. Die Zubehöransicht befindet sich in der Inhaltsansicht und wird nicht zur Containeransicht hinzugefügt. –

+0

Offenbar ist diese Idee nur für benutzerdefinierte Zellen. Genau wie der, der mit der Frage geteilt wurde. – Suresh

+0

Benutzerdefinierte Zellen können weiterhin Zubehöransichten haben. –

2

In der Benutzerschnittstelle für UITableView eingestellten Zeilenhöhe Attributwert 210. und in der Benutzerschnittstelle für UITableViewCell eingestellte Zeilenhöhe Attributwert 200.

es 10 Pixel in dem Raum zwischen Tableview jeder Zelle gesetzt wird

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

erhöhen Sie die Zelle Höhe .... und das Trenn verstecken und die Hintergrundansicht setBackgroundColor gesetzt: [UIColor Clear]]

2

ich denke, Der beste Weg ist, eine Trennzelle für jede normale Zelle hinzuzufügen. Lassen Sie jede Art von Zelle ihre eigene Aufgabe ausführen, und Sie können das Trennzeichen und die normale Zelle wiederverwenden, wo Sie ihre Benutzeroberfläche nicht erneut ändern müssen und müssen. und Sie können den Separator anpassen, wie Sie wollen, und alle Berechnungen sind leicht, einfach so:

- (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

Sie, dass & Set Tableview Stil Grouped durch mit 1 Zelle pro Abschnitt erreichen kann.

0

Wenn Sie Abschnitte erstellen möchten und keinen Mystery-Bereich innerhalb Ihrer Zellen erstellen möchten, erstellen Sie eine Sammlungsansicht anstelle einer Tabellenansicht. Sammlungsansichten können nur auf vertikale und nur auf eine Spalte gesetzt werden = Sie können auch die minimale Zeilenhöhe und den Abstand zwischen den einzelnen Elementen festlegen.Apple Developer Docs for UICollectionView

0

Fügen Sie UIView (parentView) zu ContentView hinzu. Fügen Sie 10 Pixelabstand von oben und unten zu parentView hinzu. Fügen Sie Ihren Zelleninhalt in ParentView hinzu.

Verwandte Themen