Ich würde gerne wissen, ob es möglich ist, die Breite einer UITableViewCell anzupassen. Ich möchte ein Bild auf der linken Seite (wie die Kontaktansicht im Adressbuch). Ich fand einen Beitrag here, der ein Bild von genau liefert, was ich zu erreichen versuche. Ich möchte auch die Antworten auf diesen Beitrag bestätigen.Kann die Breite einer UITableViewCell angepasst werden?
Antwort
OS3.0 hat einige Stil-Optionen in der API, die tun können, was Sie wollen.
Oder können Sie eine ganz individuelle Tabellenansicht Zelle innerhalb Interface Builder erstellen, zum Beispiel in einem meiner apps ich dies tun in meinem cellForRowAtIndexPath:
PlaceViewCell *cell = (PlaceViewCell*) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [self createNewPlaceCellFromNib];
}
Und das ist die Methode, um es zu graben aus Die NIB
- (PlaceViewCell*) createNewPlaceCellFromNib {
NSArray* nibContents = [[NSBundle mainBundle]
loadNibNamed:@"PlaceCell" owner:self options:nil];
NSEnumerator *nibEnumerator = [nibContents objectEnumerator];
PlaceViewCell* placeCell = nil;
NSObject* nibItem = nil;
while ((nibItem = [nibEnumerator nextObject]) != nil) {
if ([nibItem isKindOfClass: [PlaceViewCell class]]) {
placeCell = (PlaceViewCell*) nibItem;
if ([placeCell.reuseIdentifier isEqualToString: @"Place" ]) {
//NSLog(@"PlaceCell - we have a winner!");
break; // we have a winner
} else {
placeCell = nil;
NSLog(@"PlaceCell is nil!");
}
}
}
return placeCell;
}
Dann können Sie die UITableViewCell-Unterklasse direkt in Interface Builder erstellen.
IMO Sie dürfen die Breite einer UITableViewCell nicht ändern, aber zum Glück müssen Sie nicht. Apple stellt vier Standardstile zur Verfügung, die ein Bild am linken Rand der Zelle anzeigen können (wenn Sie es an einer anderen Stelle platzieren möchten, müssen Sie ein benutzerdefiniertes Layout erstellen).
Die vier Arten von UITableViewCellStyle sind:
- UITableViewCellStyleDefault
- UITableViewCellStyleSubtitle
- UITableViewCellStyleValue1
- UITableViewCellStyleValue2
Um ein Bild in ein UITableViewCell einbetten Sie shou ld die Tableview Programmieranleitung bei Apples Developer Connection Netzwerk lesen: Using Cell Objects in Predefined Styles
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MyIdentifier"];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
NSDictionary *item = (NSDictionary *)[self.content objectAtIndex:indexPath.row];
cell.textLabel.text = [item objectForKey:@"mainTitleKey"];
cell.detailTextLabel.text = [item objectForKey:@"secondaryTitleKey"];
NSString *path = [[NSBundle mainBundle] pathForResource:[item objectForKey:@"imageKey"] ofType:@"png"];
UIImage *theImage = [UIImage imageWithContentsOfFile:path];
cell.imageView.image = theImage;
return cell;
}
Vielen Dank für das Teilen, aber sie scheinen nicht nützlich für das, was ich zu erreichen versuche. Ich möchte, dass sich das Bild außerhalb der Zelle befindet (genau links von der Zelle versetzt), wie das Bild in dem Post, den ich verlinkt habe, zeigt. Auch hier möchte ich das Bild nicht in der Zelle haben. Öffnen Sie Kontakte auf Ihrem iPhone oder iPod touch und gehen Sie in die Details einer Person.Sie können genau sehen, was ich dort zu erreichen versuche. Es gibt einen Bildversatz links von den Zellen oben. –
Ok ich sehe, aber Sie sollten wirklich lesen, dass Tableview Programmieranleitung. Unter den erklärten Wegen gibt es einen anderen Weg. Wenn Sie UITableViewCell vollständig ableiten, sind Sie völlig frei in dem, was Sie rendern möchten. –
Sie brauchen nicht die Breite der Zelle zu ändern. Was Sie wirklich brauchen, ist, dass die Zelle wie aussieht. Sie hat eine andere Breite (z. B. durch Ändern der Breite ihrer sichtbaren Unteransicht).
Leider funktioniert Ihr Link nicht, daher kann ich nicht genauer sein.
Sie können auch versuchen, tableView:indentationLevelForRowAtIndexPath:
Methode in UITableViewDelegate
Protokoll zu betrachten.
- 1. Wie wird die Breite von TTSstyledTextLabel angepasst?
- 2. Kann die vertikale Skalierung einer Schriftart mit CSS angepasst werden?
- 3. Wie wird die Größe von UITableViewCell an den Inhalt angepasst?
- 4. UITableViewCell falscher Inhalt Breite
- 5. Wie kann die Schrumpfbreite einer Tabellenzelle so angepasst werden, dass sie nur ihrem Inhalt entspricht?
- 6. Wie wird die Breite eines UILabel angepasst und an die Textgröße angepasst?
- 7. Kann das Farbschema einer Google Map angepasst werden?
- 8. Wie kann die Ereignisquelle für ActionEvent angepasst werden?
- 9. Wie UITableView an die Größe des Inhalts angepasst werden kann
- 10. Kann der Abstand einer Definitionsliste in html/css angepasst werden?
- 11. Kann das DisplayMember einer DataBound ComboBox angepasst werden? Diese
- 12. Dynamische Berechnung der UILabel-Breite in UITableViewCell
- 13. Kann Mongo Dokument ID-Format angepasst werden?
- 14. Kann das Wicket-Modal-Fenster angepasst werden?
- 15. Bootstrap-Tabellenzeilenhöhe kann nicht angepasst werden
- 16. Kann die AppRequest Notification-Nachricht ähnlich wie BranchOut angepasst werden?
- 17. Kann der Video-Header nicht an die Bildschirmgröße angepasst werden?
- 18. Wie kann die Geschwindigkeit in der JQuery-Animationsfolie angepasst werden?
- 19. UIButton in UITableViewCell kann nicht deaktiviert werden
- 20. Falsche contentView-Breite in benutzerdefiniertem UITableViewCell?
- 21. In OpenGL, wie kann ich für das Fenster die Größe angepasst werden?
- 22. Warum ist UITableViewCell Breite kleiner als UITableView Breite
- 23. Wie kann in einer WPF-Anwendung angepasst werden, um die Auflösung zu ändern?
- 24. Wie wird die Breite des äußeren Elements der Breite seines Inhalts angepasst?
- 25. Fnd die Breite von contenView in einer UITableViewCell im Falle von iPad
- 26. Swing Menü, das vom Benutzer angepasst werden kann
- 27. Tabelle oder Div Höhe und Breite angepasst an Hintergrund Bildgröße
- 28. Wie kann verhindert werden, dass Eingabeelemente die Breite einer Tabellenspalte beeinflussen?
- 29. Wie kann die Tab-Breite in qt überschrieben werden?
- 30. Die Breite von webkit-scrollbar-thumb kann nicht eingestellt werden
Denkst du mich in Richtung dieser nützlichen APIs? Ich schaute auf die 2.2/3.0 Diffs doc und konnte die neuen Stiloptionen, über die Sie sprechen, nicht finden. Hilft es auch, die benutzerdefinierte Ansichtszelle in Interface Builder aus irgendeinem Grund zu erstellen? Ich habe keine Probleme beim Erstellen der Zelle, ich habe nur Probleme, die Breite anzupassen. –
siehe Antwort von Daskaja für Details der vordefinierten Zellansicht Stile in 3.0 – frankodwyer