이미지를 이전에 (메인 스레드에서 동기식으로) 그렸으므로 잘 작동합니다. 아래는 내가 그린 것입니다 :GCD를 사용하여 이미지를 그리는 방법?
하지만 지금, 나는 성능 향상을 위해 그것을 다시 그리기 GCD를 이용하고 싶습니다.
은 왜 회색 원이 측방으로 간다 :하지만 내가 GCD를 사용하는 코드를 설정 한 후 다음과 같은 이미지를 가지고?
let queue3 = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
print("frame: \(self.frame)")
self.attachSunMoon()
self.attachClock(rect)
dispatch_async(queue3, {
self.buildCircle(circleRadius: self.radius)
})
전에
코드가 (기적이 잘 작동,하지만 내가 원하는, 내가 GCD를 사용하는 것을 선호) :
이 (비동기) 최신 코드 : 지난
print("frame: \(self.frame)")
self.attachSunMoon()
self.attachClock(rect)
self.buildCircle(circleRadius: self.radius)
의
buildCircle
기능 :
/// Draw the big circle
private func buildCircle(circleRadius radius: CGFloat) {
UIGraphicsPushContext(self.ccontext!)
defer { UIGraphicsPopContext() }
print("frame: \(self.frame)")
// Drawing code
let center = CGPoint(x: self.frame.width/2, y: self.frame.height/2)
self.centerPoint = center
//let radius = max(rect.width, rect.height) - 40
let startAngle: CGFloat = 0
let endAngle: CGFloat = 2*π
let path = UIBezierPath(arcCenter: center, radius: radius, startAngle: startAngle, endAngle: endAngle, clockwise: true)
path.lineWidth = self.arcWidth
clockBorderColor.setStroke()
path.stroke()
}
당신의 도움을 주셔서 감사합니다! :)
네, 맞습니다. 이미 배경 스레드에서 내용을 그리는 방법으로 문제를 해결했습니다. 그리기 작업이 완료되면 UI의 이미지를 주 스레드에 표시합니다. –