行动按钮的快速图像

时间:2016-02-11 12:27:27

标签: swift cocoa-touch

在我的swift 2应用程序中,我有一个表视图和一个行动作按钮(删除), 我找到了一种方法来改变这个按钮的背景颜色,但现在我想设置一个图像而不是文本“删除”

有快速的解决方案吗? 这是我的代码:

func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? {
    let delete = UITableViewRowAction(style: .Default, title: "Delete") { (action, indexPath) in

    // do some action

    delete.backgroundColor = UIColor.redColor()
    return [delete]
}

3 个答案:

答案 0 :(得分:1)

UIColor的这个扩展将实现您的目标。您必须根据图像来调整大小。

extension UIColor {
 static func imageWithBackgroundColor(image: UIImage, bgColor: UIColor) -> UIColor {
    let size = CGSize(width: 70, height: 70)

    UIGraphicsBeginImageContextWithOptions(size, false, 0)
    let context = UIGraphicsGetCurrentContext()


    let rectangle = CGRect(x: 0, y: 0, width: size.width, height: size.height)

    CGContextSetFillColorWithColor(context, bgColor.CGColor)
    CGContextAddRect(context, rectangle)
    CGContextDrawPath(context, .Fill)

    CGContextDrawImage(context, rectangle, image.CGImage)

    let img = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

   return UIColor(patternImage: img)

  }
}

使用:

func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? {
  let delete = UITableViewRowAction(style: .Default, title: "Delete") { (action, indexPath) in

 // do some action
// 
 if let buttonImage = UIImage(named: "myImage") { 
 delete.backgroundColor = UIColor.imageWithBackgroundColor(image: buttonImage, bgColor: UIColor.blueColor()) 
  }
return [delete]
}

答案 1 :(得分:0)

试试这个:

yourBtn.setImage(UIImage(named: yourImage), forState: .Normal)

务必在“属性”检查器中将按钮设置为“自定义”,并删除文本。

答案 2 :(得分:0)

你能试试这个https://github.com/CEWendel/SWTableViewCell吗?希望这个帮助