gpt4 book ai didi

iOS 使用drawrect 在tableView 中绘制图像

转载 作者:行者123 更新时间:2023-11-30 14:06:50 25 4
gpt4 key购买 nike

我有一个 UITableView,它有一个自定义的 tableView 单元格。这已被子类化。 tableViewCell 有一个图像、标签和一个 UIView(参见附图)enter image description here

为了制作这条线,我在单元格中放置了一个 UIView。我使用 drawRect 在单独的类 makeLine.swift 中制作了这条线,并将其指定为 View 的类。

问题 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 一旦这条线完成,我想让它可点击并继续到下一个 viewController。我已将 tapGestureRecognizer 添加到 UIView (其中有该行)。我还启用了用户交互。点击功能如下 - 但不知何故它不起作用

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

最佳答案

问题 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 的方法你的线路类的方法。通过这种方式,您可以将行号传递给负责绘制线条的 View 。您仍然需要实现根据给定行号选择线条颜色的任何逻辑。

问题 2

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

关于iOS 使用drawrect 在tableView 中绘制图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32271452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com