iOS使用drawrect在tableView中绘制图像

时间:2015-08-28 12:47:49

标签: ios swift graphics tableview drawrect

我有一个UITableView,它有一个customtableView Cell。这已被分类。 tableViewCell有一个图像,标签和UIView(参见附件截图)enter image description here

要制作线条,我将UIView放在单元格中。我使用drawRect在一个单独的类makeLine.swift中创建了该行,并将其指定为视图的类。

问题1:我想根据TableRownumber更改线条的颜色。我在customCell类中为UIView做了一个出口。我猜测需要在cellForRowIndexPath方法中完成一些事情 - 但不知道是什么以及如何做。我不想将现有图像用于行

以下是制作该行的代码:

class LoginLine1: UIView {

    override func drawRect(rect: CGRect) {
        let context = UIGraphicsGetCurrentContext()
        CGContextSetLineWidth(context, 2.0)
        let colorSpace = CGColorSpaceCreateDeviceRGB()
        let components: [CGFloat] = [107.0/255.0, 107.0/255.0, 107.0/255.0, 1.0]
        let color = CGColorCreate(colorSpace, components)
        CGContextSetStrokeColorWithColor(context, color)
        CGContextMoveToPoint(context, 0, 0)
        CGContextAddLineToPoint(context, 70, 0)
        CGContextStrokePath(context)
    }
}

第2期一旦生成此行,我想将其设置为tapable并转到下一个viewController。我已将tapGestureRecognizer添加到UIView(其中包含该行)。我还启用了用户交互。点击功能如下 - 但不知何故它不起作用

@IBAction func lineTap(sender: AnyObject) {
    performSegueWithIdentifier("segue", sender: self)
}

1 个答案:

答案 0 :(得分:0)

第1期

您可以将相应的行号存储在自定义单元格的属性中,如下所示:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
{
    var cell = tableView.dequeueReusableCellWithIdentifier("cellIdentifier") as CustomCell
    cell.rowNumber = indexPath.row

    ...

    return cell
}

在自定义单元格中,您可以为属性创建自定义setter,如下所示:

var rowNumber : Int {
    didSet {
        drawLineWithRowNumber(rowNumber)
    }
}

drawLineWithRowNumber(rowNumber)是调用行类的drawRect方法的方法。通过这种方式,您可以将行号传递给负责绘制线的视图。您仍然必须实现任何基于给定行号选择线条颜色的逻辑。

第2期

您可以更好地使用func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)导航到下一个视图控制器,而不是让线路可以点击,除非您在点击线路时需要特定的行为。