¿Cómo agregar image a la acción de fila en la vista de tabla?

¿Cómo agregar una image personalizada para borrar el button al deslizar la celda desde la derecha en UITableview como se muestra en la image siguiente?

introduzca la descripción de la imagen aquí

  func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? { let remove = UITableViewRowAction(style: .Default, title: "\nRemove") { action, indexPath in } remove.backgroundColor = UIColor(patternImage: UIImage(named: "remove")!) } 

Del código anterior, la image se muestra, pero se muestra como un grupo de imágenes astackdas juntas. Es decir, no puedo configurar "ContentMode" en ".ScaleToAspectFit" para el "UIImage"

¿Cuál es la mejor manera para este enfoque?

El código de muestra podría ser apreciable.

testing esto

 let backImage = UIImageView(image: UIImage(named: "remove")) backImage.contentMode = .ScaleToAspectFit remove.backgroundColor = UIColor(patternImage:backImage.image)! 

Choice-2

 var img: UIImage = UIImage(named: "remove") var imgSize: CGSize = tableView.frame.size UIGraphicsBeginImageContext(imgSize) img.drawInRect(CGRectMake(20, 0, 20, 20)) var newImage: UIImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() remove.backgroundColor = UIColor(patternImage: newImage) 

Esencialmente, está dibujando en un context, luego recupera la nueva image del context.

 let label = UILabel(frame: CGRect(x: 0, y: 0, width: 80, height: 100)) label.text = "ADD" label.textAlignment = .Center label.textColor = UIColor.whiteColor() let img: UIImage = UIImage(named: "delete") UIGraphicsBeginImageContextWithOptions(imgSize, false, UIScreen.mainScreen().scale) let context = UIGraphicsGetCurrentContext() // Set background color CGContextSetFillColorWithColor(context, UIColor.raangeRed().CGColor) CGContextFillRect(context, CGRect(x: 0, y: 0, width: 80, height: 80)) // Draw image img.drawInRect(CGRectMake(30, 15, 20, 20)) // Draw View label.layer.renderInContext(context!) // Retrieve new UIImage let newImage: UIImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() let deleteRowAction = UITableViewRowAction(style: .Normal, title: " ") { (rowAction, indexPath) in // Do stuff } deleteRowAction.backgroundColor = UIColor(patternImage: newImage) 

También puede crear una vista personalizada (con un UIImageView y UILabel) y renderizarlo dentro del context.

Inspirado con la respuesta de Denny. Aquí está la versión objetiva-c de su código.

 - (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewRowAction *deleteAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@" " handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Do you really want to delete this comment?" message:@"" delegate:self cancelButtonTitle:@"NO" otherButtonTitles:@"YES", nil]; [alertView setTag:101]; [alertView show]; }]; UITableViewCell *commentCell = (UITableViewCell *)[tableView cellForRowAtIndexPath:indexPath]; CGFloat height = commentCell.frame.size.height; UIImage *backgroundImage = [self deleteImageForHeight:height]; deleteAction.backgroundColor = [UIColor colorWithPatternImage:backgroundImage]; return @[deleteAction]; } 

Y a continuación se muestra el método de dibujo de imágenes:

 - (UIImage*)deleteImageForHeight:(CGFloat)height{ CGRect frame = CGRectMake(0, 0, 62, height); UIGraphicsBeginImageContextWithOptions(CGSizeMake(62, height), NO, [UIScreen mainScreen].scale); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(context, [UIColor networkingColor].CGColor); CGContextFillRect(context, frame); UIImage *image = [UIImage imageNamed:@"icon-delete"]; [image drawInRect:CGRectMake(frame.size.width/2.0, frame.size.height/2.0 - 10, 18, 20)]; UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return newImage; } 

Y el resultado es: Imagen de eliminación de celda de vista de tabla