상위 패널(상위 클래스)에서 골격을 만들고
var dataLayer : CALayer = CALayer(layer: 0)
func drawAdata(_ index : Int) {
}
override func drawAdata(_ index : Int) {
골격구현
override func drawAdata(_ index : Int) {
if GS.s.logLevel.contains(.graphPanel) { debugPrint("index \(index)") }
dataLayer.removeFromSuperlayer()
dataLayer = jhType1graphLayer<T>(self, 0, maxY, index)
dataLayer.frame = CGRect(x: GS.s.jhLMarginX, y: GS.s.jhLMarginY, width: self.bounds.width - GS.s.jhLMarginX, height: self.bounds.height - GS.s.jhLMarginY)
dataLayer.zPosition=1
self.layer.addSublayer(dataLayer)
dataLayer.setNeedsDisplay()
jhDataCenter.attachObserver(observer: self)
}
데이터 센터는 그래프 드로잉에 필요한 데이터를 저장하는 공간이다. 해당 공간에 옵저버 패턴으로 구현된 브로드 캐스팅 시스템이 있다. - redraw를 위해.
원리는 간단하다. 본래 그렸던 레이어를 지우면서 계속해서 새로 그리는 것이다. 포토샵 할 때 레이어를 여러장 얹는 것과 같다. hightlight 되는 그래프나 점 같은 것을 그 위에 덮는 것.
'블로그 항해 일지 > Graph' 카테고리의 다른 글
그래프를 만들어 공급하는 회사에서 오픈 소스화 하기로 함 (0) | 2019.01.07 |
---|---|
github의 Charts 데모 중 라인 그래프를 내 프로젝트에 넣기 (0) | 2019.01.04 |