454961172 / KlineDemo

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

KlineDemo

#demo介绍文章: http://www.jianshu.com/p/f37ab1e73006

方法介绍(包含以上除了横屏外的所有效果实现)

#代理 改变视图变化的操作

@class CAShapeLayer,KlineModel;

@protocol lineDataSource

//展示的下标位置 count 展示的个数

  • (KlineModel *)LineView:(UIView *)view cellAtIndex:(NSInteger)index;
  • (NSInteger)numberOfLineView:(UIView *)view ;//返回数组总共要移动的个数

@optional

  • (void)TrackingCrossIndexModel:(KlineModel *)model IndexPoint:(CGPoint)Point;//十字光标滑动时候选择的model和对应的point

  • (void)willReload;//在这个方法里面 会刷新最高最低价格

@end

#外部方法

@property (nonatomic, weak)iddelegate;

  • (instancetype)initWithFrame:(CGRect)frame Delegate:(id)delegate;//这种写法一般是不可取的 不能强制要求设置代理。 因为这个类特殊 所以偷懒了。

@property (nonatomic, assign,readonly)CGFloat heightPrice;//外界可能需要展示这个最高价 @property (nonatomic, assign,readonly)CGFloat lowerPrice;//外界可能需要展示这个最低价 @property (nonatomic, assign,getter=isShowTrackingCross)BOOL ShowTrackingCross;

  • (void)reload;//重新刷新视图 外界数据变化的时候可用
  • (void)replacementLastPoint:(KlineModel *)model;//替换最后一点 tcp数据跳动的时候可用

#内部私有方法

  • (void)offset_xPoint方法: 如果point.x >0 减去偏移量 显示之前的数据 为0的时候显示self.OffsetIndex开始的数据 否则显示之后的数据。

  • (void)CalculationHeightAndLowerFromArray:(NSArray:) ; //遍历获取显示数据的最高最低值

  • (void)CalculationH; //计算self.h每个点代表的值是多少

  • (void)CalculationShowPointFromLastPrices:(NSArray <KlineModel >)array //绘制所有蜡烛图通过代理获取到的model数据的蜡烛图

  • (void)replacementLastPoint:(KlineModel *)model //替换最后一个点 逻辑是删除self.ShapeLayer的最后一个视图 再通过model生成这个位置对应的蜡烛图 添加到父layer

  • (CAShapeLayer *)GetShapeLayerFromModel:(KlineModel *)model Index:(NSInteger)idx //通过model和对应下标生成蜡烛图 添加到父视图中

  • (void)offset_xPoint:(CGPoint)point //滑动效果 改变OffsetIndex的值 刷新数据

  • (void)pinchAction:(UIPinchGestureRecognizer *)pinch //缩放效果 改变x_scale的值 刷新数据

  • (void)panGesture:(UIPanGestureRecognizer *)pan //通过self.isShowTrackingCross判断是否显示十字光标 否则拉动新的数据

  • (void)TrackingCrossFromPoint:(CGPoint)point //十字光标 通过point逆推得出index 现在的下标/(单元大小)*缩放量

//获取point.x坐标 和这个model的最新价或者其它价格对应的y 这里展示最新价

//把model通过@selector(TrackingCrossIndexModel:IndexPoint:)传递给外界 绘制当前路径

  • (void)setShowTrackingCross:(BOOL)ShowTrackingCross 重写set方法判断是否隐藏十字光标

横屏效果 在监控到屏幕转动的时候重新设置frame 调用reload就好了。 里面暂时没做任何处理.

其它细节请参考理论篇 请找茬 共同进步!!

About


Languages

Language:Objective-C 100.0%