新手程序员在这里。我正试图模拟一个村庄内家庭的互动。
我在下面有一个功能(A)绘制一个模拟村庄(每个矩形代表村里的一个房子)。我的问题是我有另一个功能(B - 除了下面的小部分之外没有显示)(按下按钮开始),它改变了驱动村庄外观的底层阵列。它在for循环中这样做。所以在函数B中,我运行100次迭代,并且在每次迭代时,我调用函数(A)来重绘村庄。问题是app只在第100个循环结束时绘制了村庄。我已经尝试了setNeedsDisplay等,没有运气,我希望在每次迭代时都能看到村庄,这样当矩形从iter变为iter时,它会创建一些动画。
摘自功能B ......
for iIter... 100 times {
drawVillage()
imageView.setNeedsDisplay() <-- TRYING TO REFRESH HERE
}
功能A ......
func drawVillage() {
let xSize: Int = Int (gxRes / gxHomes); let ySize: Int = Int (gyRes / gyHomes)
let xRes = Int(gxHomes * xSize); let yRes = Int(gyHomes * ySize)
UIGraphicsBeginImageContextWithOptions(CGSize(width: xRes, height: yRes), false, 0)
let context = UIGraphicsGetCurrentContext()
var iStatus: Int
for var yHome: Int = 1; yHome <= gyHomes; ++yHome {
for var xHome: Int = 1; xHome <= gxHomes; ++xHome {
var rectangle = CGRect(x: (xHome - 1) * xSize, y: (yHome - 1) * ySize, width: xSize, height: ySize)
iStatus = gaVillageStatus[xHome][yHome]
if iStatus == 0 {
CGContextSetFillColorWithColor(context, UIColor.whiteColor().CGColor)
} else if iStatus == 1 {
CGContextSetFillColorWithColor(context, UIColor.greenColor().CGColor)
} else if iStatus == 2 {
CGContextSetFillColorWithColor(context, UIColor.blueColor().CGColor)
} else if iStatus == 3 {
CGContextSetFillColorWithColor(context, UIColor.redColor().CGColor)
}
CGContextSetStrokeColorWithColor(context, UIColor.blackColor().CGColor)
CGContextSetLineWidth(context, 1)
CGContextAddRect(context, rectangle)
CGContextDrawPath(context, .FillStroke)
}
}
var img = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
imageView.image = img
}