C'è un modo per impostare UITableViewCell.image per visualizzare sul lato destro della cella anziché a sinistra? O dovrò aggiungere un UIImageView separato sul lato destro del layout della cella?UITableViewCell con immagine a destra?
risposta
No. Ma è possibile aggiungere facilmente una vista immagine come la vista accessoria a una cella di tabella per lo stesso effetto.
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"foo.png"]];
cell.accessoryView = imageView;
[imageView release];
Questo Soln è per l'aggiunta di un'immagine diversa in ogni cella .... Basta una Prova
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
if(indexPath.row == 0) {
cell.image = [UIImage imageNamed:@"image.png"];
}
else if (indexPath.row == 1) {
cell.image = [UIImage imageNamed:@"image1.png"];
}
Non pertinente alla domanda? –
L'OP comprende già come aggiungere un'immagine usando la vista dell'immagine della cella, che è tutto ciò che mostra questo frammento. Come posizionare un'immagine per apparire sul lato destro è la domanda. – arooaroo
sottoclasse UITableViewCell e override layoutSubviews e poi basta regolare i fotogrammi del self.textLabel, viste self.detailTextLabel e self.imageView.
questo è come potrebbe apparire come nel codice:
MYTableViewCell.h
:
#import <UIKit/UIKit.h>
@interface MYTableViewCell : UITableViewCell
@end
MYTableViewCell.m
:
#import "MYTableViewCell.h"
@implementation MYTableViewCell
- (void)layoutSubviews
{
[super layoutSubviews];
if (self.imageView.image) {
self.imageView.frame = CGRectMake(CGRectGetWidth(self.contentView.bounds) - 32 - 8,
CGRectGetMidY(self.contentView.bounds) - 16.0f,
32,
32);
CGRect frame = self.textLabel.frame;
frame.origin.x = 8;
self.textLabel.frame = frame;
frame = self.detailTextLabel.frame;
frame.origin.x = 8;
self.detailTextLabel.frame = frame;
}
}
@end
per aggiungere un'immagine @ lato destro nella cella, vorrei suggerire per creare una cella personalizzata con imageview sul lato destro, sarà molto utile per te. e aggiungi una vista vuota per collegare questo pennino con la classe customcell.
Ora nel file del pennino della cella rimuovere la vista, aggiungere tableViewcell e in quella cella trascinare & rilasciare un imageView a destra.
Ora vai alla classe del TableViewCell dicono DemoCell, creare una presa di corrente e impostare con l'imageview nel pennino della TableCell
Ora, nel metodo cellForRowAtIndexPath del Tableview riferimento tuo cellulare e utilizzarlo con il nome pennino come questo
static NSString *CellIdentifier = @"Cell";
DemoCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[SettingCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
cell = [[[NSBundle mainBundle]loadNibNamed:@"DemoCell" owner:self options:nil] lastObject];
}
e impostare l'immagine secondo il vostro requisito
cell.imageVw.img ....
È possibile RESI ze image in accessoryview chiamando il metodo setFrame di imageview in questo modo: [imageView setFrame: CGRectMake (0, 0, 35.0, 35.0)];
Ecco un esempio in Swift con l'approccio di utilizzare accessoryView
:
private let reuseIdentifier: String = "your-cell-reuse-id"
// MARK: UITableViewDataSource
func tableView(tableView:UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell : UITableViewCell? = tableView.dequeueReusableCellWithIdentifier(reuseIdentifier) as? UITableViewCell
if (cell == nil) {
cell = UITableViewCell(style:UITableViewCellStyle.Subtitle, reuseIdentifier:reuseIdentifier)
}
cell!.textLabel!.text = "Hello"
cell!.detailTextLabel!.text = "World"
cell!.accessoryView = UIImageView(image:UIImage(named:"YourImageName")!)
return cell!
}
E 'necessario creare una propria immagine, è sufficiente modificare cell.tintColor
.
Per i casi semplici si può fare questo:
cell.contentView.transform = CGAffineTransformMakeScale(-1,1);
cell.imageView.transform = CGAffineTransformMakeScale(-1,1);
cell.textLabel.transform = CGAffineTransformMakeScale(-1,1);
cell.textLabel.textAlignment = NSTextAlignmentRight; // optional
Ciò capovolgere (specchio) alla vista del contenuto porre alcuna IMAGEVIEW sulla destra. Si noti che è necessario capovolgere l'imageView e le eventuali etichette di testo anche in caso contrario esse sarebbero specchiate! Questa soluzione conserva la vista accessoria a destra.
Se non si vuole fare una cella personalizzato e lavorerà con un unico standard, è necessario come minimo due modi:
- da usare accessoryView.
cell.accessoryView = UIImageView(image: UIImage(named: "imageName"))
cell.accessoryView.frame = CGRectMake(0, 0, 22, 22)
- Se si desidera avere l'immagine a destra + accessoryView, quindi è possibile aggiungere presa UIImageView a contentView (nome Esempio: rightImage) e cambiare il colore di textLabel di sfondo come Chiaro.
cell.rightImage.image = UIImage(named: "imageName")
cell.textLabel.backgroundColor = UIColor.clearColor()
C'è un modo per impostare il position
di programmazione. Ecco la versione Swift
della soluzione:
image.frame = CGRect.init(
x: self.view.frame.width - image.frame.width*1.1,
y: image.frame.origin.y,
width: image.frame.width,
height: image.frame.height)
Questo posizionerà la vostra immagine sul lato destro della cella. Questa soluzione sta regolando automaticamente la posizione in base alle dimensioni dello schermo. L'unico lato negativo è quando si ruota il dispositivo è necessario ricaricare i dati, ma si può solo override
nella classe UITableView
il metodo didRotate
ascoltatore:
override func didRotate(from fromInterfaceOrientation: UIInterfaceOrientation) {
_tableView.reloadData()}
in swift3 e swift4, possiamo utilizzare questo:
cell.accessoryView = UIImageView(image:UIImage(named:"imageNmae")!)
Cambiando la vista accessorio, quindi sovrascrivere l'indicatore di divulgazione? –
Sì, lo farebbe. Se lo desideri, devi aggiungere manualmente UIImageView alla tua cella al momento della creazione. Oppure crea una sottoclasse per la tua speciale cella di tabella che avvolge tutto ciò per te. –
C'è un piccolo refuso nel metodo UIImage: dovrebbe dire [UIImage imageNamed: @ "foo.png"] – arooaroo