Charts: рдХрд┐рд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЬрд╝реВрдо рд╕реНрддрд░ред

рдХреЛ рдирд┐рд░реНрдорд┐рдд 4 рдЕрдЧре░ 2015  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: danielgindi/Charts

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдорд╣рд╛рди рдкреБрд╕реНрддрдХрд╛рд▓рдпред рдХрд╛рд╢ рдореБрдЭреЗ рдпрд╣ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬрд▓реНрджреА рдорд┐рд▓ рдЬрд╛рддреА, рдореИрдВ рдЕрднреА рднреА рд╕рднреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд╕реАрдЦ рд░рд╣рд╛ рд╣реВрдВред рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореБрдЭреЗ рдЗрд╕реЗ рд╕реЗрдЯрдЕрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдорджрдж рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдЬреЛ рдХрд┐ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд▓рд╛рдЗрди рдЪрд╛рд░реНрдЯ рдпрд╛ рдмрд╛рд░ рдЪрд╛рд░реНрдЯ рдХреЛ рдкреНрд▓реЙрдЯ рдХрд░рдирд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ 100 рдбреЗрдЯрд╛ рдкреЙрдЗрдВрдЯ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЪрд╛рд░реНрдЯ рджрд┐рдЦрд╛рдиреЗ рдкрд░ рдЗрди рд╕рднреА 100 рдбреЗрдЯрд╛ рдкреЙрдЗрдВрдЯ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдХреНрдпрд╛ рдХреЛрдИ рд╣реИ рдЕрдВрддрд┐рдо 10 рдбреЗрдЯрд╛ рдмрд┐рдВрджреБрдУрдВ рдпрд╛ рдкрд╣рд▓реЗ 10 рдбреЗрдЯрд╛ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛ рддрд░реАрдХрд╛ рдФрд░ рдлрд┐рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрд╛рдХреА рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЙрдкрд▓рдмреНрдз рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕реЗрдЯ рдЕрдк рдХрд░реЗрдВ? Thnx

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@spauldingim рдореБрдЭреЗ рдЕрдкрдиреЗ рдмрд╛рд░ рдЪрд╛рд░реНрдЯ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рдереА, рдЬрд╣рд╛рдВ рдпрд╣ рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдКрдкрд░ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рдмрд╣реБрдд рджреВрд░ рддрдХ рдЬрд╝реВрдо рдХрд░реЗрдЧрд╛ред

рд╣рд░ рдмрд╛рд░ рдкрд╣рд▓реА рдмрд╛рд░ рдЬрд╝реВрдо рдЖрдЙрдЯ рдХрд░рдХреЗ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛:
barChartView.zoom(scaleX: 0, scaleY: 0, x: 0, y: 0)

рд╕рднреА 8 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдпрд╣ рдореЗрд░реА рдкреБрд░рд╛рдиреА рдкреЛрд╕реНрдЯ рдХреЗ рд╕рдорд╛рди рд╣реИред рдореИрдВ рдЬреЛ рдкреВрдЫ рд░рд╣рд╛ рдерд╛ рд╡рд╣ рдЪрд╛рд░реНрдЯ рдХреЛ рд╡рд╛рдкрд╕ рдХреВрджрддреЗ рд╕рдордп рд╕реНрдХреЗрд▓/рд╕реНрдХреНрд░реЙрд▓ рдСрдлрд╝рд╕реЗрдЯ рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ :https://github.com/danielgindi/ios-charts/issues/226

рдЖрдкрдХреА рддреНрд╡рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВрдиреЗ рдЙрд╕ рдкреЛрд╕реНрдЯ рдХреЛ рдкрд╣рд▓реЗ рджреЗрдЦрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдХрд┐ рд╡рд╛рдВрдЫрд┐рдд рд▓рдХреНрд╖реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдореЗрд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ 1 рд╡реАрд╕реА рд╣реИ рдЗрд╕рд▓рд┐рдП рджреВрд╕рд░реЗ рд╡реАрд╕реА рдХреЛ рд▓реЗ рдЬрд╛рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЕрдЧрд░ рдПрдХ рд╣реА рдХреЛрдб рд╣реИ рддреЛ рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рдПрдЧреАред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдЬрд▓реНрджреА рд╕рдорд╛рдзрд╛рди рдирд┐рдХрд╛рд▓рдирд╛ рдЖрд╕рд╛рди рдХрд╛рдо рдирд╣реАрдВ рд╣реИред

рдЕрдЧрд░ рдореИрдВ рддреБрдо рд╣реЛрддреЗ рддреЛ рдореИрдВ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ panGestureRecognized рдФрд░ pinchGestureRecognized рдХреЛ рджреЗрдЦрддрд╛ рдХрд┐ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЬрд╝реВрдо/рд╕реНрдХреНрд░реЙрд▓ рдХреИрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдо рддреМрд░ рдкрд░ рдЗрд╕реЗ рд╕реНрдкрд░реНрд╢ рд╕реНрдерд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдФрд░ рдирдП рдкреИрдорд╛рдиреЗ/рдЕрдиреБрд╡рд╛рдж рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдХреБрдЫ CGAffineTransform рдФрд░ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ viewPortHandler.refresh() рдорд╛рдзреНрдпрдо рд╕реЗ рд░реАрдлреНрд░реЗрд╢ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ

ChartTransformer рдФрд░ ChartViewPortHandler рдореЗрдВ рдХрдИ рдПрдкреАрдЖрдИ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдбреЗрдЯрд╛ рдорд╛рди рдФрд░ рд╕реНрдХреНрд░реАрди рдкрд┐рдХреНрд╕реЗрд▓ рдХреЛ рдПрдХ рджреВрд╕рд░реЗ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдПред

рдЖрдкрдХреЛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╕реНрдХреЗрд▓ рд╕реНрддрд░ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдкрд╣рд▓реЗ/рдЕрдВрддрд┐рдо 10 рдбреЗрдЯрд╛ рдкреЙрдЗрдВрдЯ рдЯреНрд░рд╛рдВрд╕рд▓реЗрд╢рди рд╡реИрд▓реНрдпреВ рдХреА рдЧрдгрдирд╛ рдХреИрд╕реЗ рдХрд░реЗрдВред рдореИрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдореБрдЭреЗ рд╕реНрдХреЗрд▓ рд╕реНрддрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреЗрдЯрд╛ рдмрд┐рдВрджреБ рдорд╛рди рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ, рдХреБрдЫ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рддрд╛рдХрд┐ viewPortHandler.contentRect рдореЗрдВ рдХреЗрд╡рд▓ рдЖрдкрдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рд╣реЛ (рдкрд╣рд▓реЗ рдбреЗрдЯрд╛ рдФрд░ рдЕрдВрддрд┐рдо рдбреЗрдЯрд╛ рдмрд┐рдВрджреБ x рдорд╛рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ), рддрд╛рдХрд┐ рд╣рдо рдЧрдгрдирд╛ рдХрд░ рд╕рдХреЗрдВ рд╕реАрдорд╛рдПрдВ рдФрд░ рдСрдлрд╕реЗрдЯ, рдФрд░ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рд░реАрдлреНрд░реЗрд╢ рдХрд░реЗрдВред

рдмреЗрд╣рддрд░ рдЙрддреНрддрд░реЛрдВ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ :) рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдФрд░ рдЕрдкрдирд╛ рдХрд╛рдо рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ рдХреБрдЫ рд╕реЗрдХрдВрдб рджреЗрддрд╛ рд╣реВрдВред

рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреИрд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВ:

self._viewPortHandler.restrainViewPort(offsetLeft: left, offsetTop: top, offsetRight: right, offsetBottom: bottom)
prepareOffsetMatrix()
prepareValuePxMatrix()

рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рдЦреЗрд▓рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рд╕реАрдзреЗ рдЖрдЧреЗ рд╣реИред

chart.data = data;   // This is the MAIN reason, data for the chart has to be set first before the next 2 steps otherwise they will just get ignored like nothing has been set.

// рдЕрдзрд┐рдХрддрдо x рдбреЗрдЯрд╛ рдмрд┐рдВрджреБ рдХреЛ 10 рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ, рдЬреЛ рдХрд┐ рдореИрдВ 100 рдбреЗрдЯрд╛ рдмрд┐рдВрджреБрдУрдВ рд╕реЗ рд▓рд╛рдЗрди рдпрд╛ рдмрд╛рд░ рдЪрд╛рд░реНрдЯ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ 10 рдбреЗрдЯрд╛ рдмрд┐рдВрджреБ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред
[рдЪрд╛рд░реНрдЯ рд╕реЗрдЯVisibleXRan geMaximum:10 ];
// рдЪрд╛рд░реНрдЯ рджреГрд╢реНрдп рдХреЛ X рдХреЗ 90 рдЗрдВрдбреЗрдХреНрд╕ рдореЗрдВ рд▓реЗ рдЬрд╛рдПрдВ, рдЬреЛ рдХрд┐ рдЕрдВрддрд┐рдо 10 рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдФрд░ рдпрд╣ рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
[рдЪрд╛рд░реНрдЯ рдореЛ veViewToX:90 ];

рдЕрдЪреНрдЫрд╛ рдкрдХрдбрд╝рд╛!

рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ 10 рдбреЗрдЯрд╛ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреГрд╢реНрдп рдХреЛ 'рд▓реЙрдХ' рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк viewDidLoad рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдлреНрд▓реЛрдЯ xScale = рдЯреЛрдЯрд▓ рдкреЙрдЗрдВрдЯреНрд╕ / рдЗрдирд┐рд╢рд┐рдпрд▓ рдкреЙрдЗрдВрдЯреНрд╕ рдбрд┐рд╕реНрдкреНрд▓реЗ;
[рдЪрд╛рд░реНрдЯ рдЬрд╝реВрдо: x 1.0 x:0.0 y:0.0];
[self.chartView mo veViewToX:totalPoints - InitialPointsDisplayed];

@spauldingim рдореБрдЭреЗ рдЕрдкрдиреЗ рдмрд╛рд░ рдЪрд╛рд░реНрдЯ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рдереА, рдЬрд╣рд╛рдВ рдпрд╣ рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдКрдкрд░ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рдмрд╣реБрдд рджреВрд░ рддрдХ рдЬрд╝реВрдо рдХрд░реЗрдЧрд╛ред

рд╣рд░ рдмрд╛рд░ рдкрд╣рд▓реА рдмрд╛рд░ рдЬрд╝реВрдо рдЖрдЙрдЯ рдХрд░рдХреЗ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛:
barChartView.zoom(scaleX: 0, scaleY: 0, x: 0, y: 0)

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

heumn picture heumn  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

deepumukundan picture deepumukundan  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

cilasgimenez picture cilasgimenez  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

guanyanlin picture guanyanlin  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

PrashantKT picture PrashantKT  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ