我正在尝试更新xColor中的值,因此它可以从colorPalette中获取不同的颜色。如您所见,colorPalette [xColor] .CGColor正在做的工作是检查要使用的颜色。我在尝试使用滑动手势更新xColor时遇到了麻烦,因此它可以抓取阵列中的其他元素。任何建议都会有所帮助!
Canvas.swift:
var xColor = 0
var colorPalette = [UIColor.blueColor(), UIColor.yellowColor(), UIColor.redColor(), UIColor.redColor()]
override func drawRect(rect: CGRect) {
let context = UIGraphicsGetCurrentContext()
let color = colorPalette[xColor].CGColor
CGContextSetFillColorWithColor(context, color)
let rect = CGRect(x: x - r, y: y - r, width: 2 * r, height: 2 * r)
CGContextFillEllipseInRect(context, rect)
}
ViewController.swift:
func handleSwipes(sender:UISwipeGestureRecognizer) {
let cv = CanvasView()
if (sender.direction == .Left) {
cv.xColor--
print("Swipe left!")
}
if (sender.direction == .Right) {
cv.xColor++
print("Swipe right!")
}
print(cv.xColor)
}
答案 0 :(得分:0)
您的代码存在两个问题。第一个是这一行:
let cv = CanvasView()
这会创建一个 new CanvasView,但是新的CanvasView与已经在界面中显示的旧 CanvasView不同。不幸的是,那个旧的CanvasView是你需要交谈的那个!
第二个问题,一旦你与旧的CanvasView交谈,就是你没有告诉它需要重绘。您需要发送setNeedsDisplay
消息。