0
我正在实现一些用户交互的图表,比如长按查看手指下的全部数据,用两根手指画线和其他东西。Stockapp类型的交互 - UIView x CALayer
首先,我将如何实现iphone股票应用程序在价格图的横向模式下进行的交互?
操纵一个CALayer
为黄色的垂直线和黄点?那些来自图像或渲染?使用UIView(或UIImageView)?或者在drawRect中渲染它们?
我正在实现一些用户交互的图表,比如长按查看手指下的全部数据,用两根手指画线和其他东西。Stockapp类型的交互 - UIView x CALayer
首先,我将如何实现iphone股票应用程序在价格图的横向模式下进行的交互?
操纵一个CALayer
为黄色的垂直线和黄点?那些来自图像或渲染?使用UIView(或UIImageView)?或者在drawRect中渲染它们?
我认为这实际上只是一个实施细节,所以它取决于你如何做到这一点。我猜想他们正在做的一切都在-drawRect,但是,如果你愿意,你可以用Core Animation层来实现它。
如果您已经绘制与-drawRect图,那么它将使感但是坚持说,如果你只是想覆盖层的黄点,你可以只使用垂直黄线常规CALayer s并更改其位置以响应-托架移动。
// Create a line layer with a 1px width and yellow bg
CALayer *lineLayer = [CALayer layer];
[lineLayer setBounds:CGRectMake(0.0f, 0.0f, 1.0f, parentViewHeight)];
[lineLayer setPosition:CGPointMake(currentX, parentViewHeight/2.0f)];
[lineLayer setBackgroundColor:[[UIColor yellowColor] CGColor]];
[[parentView layer] addSublayer:lineLayer];
// Create a dot layer with the contents set to a CGImageRef
UIImage *dotImage = [UIImage imageNamed:@"yellowdot.png"];
CALayer *dotLayer = [CALayer layer];
[dotLayer setBounds:CGRectMake(0.0f, 0.0f, [dotImage size].width,
[dotImage size].height)];
[dotLayer setPosition:[lineLayer position]];
[dotLayer setContents:[dotImage CGImage]];
[[parentView layer] addSublayer:dotLayer];
您需要制作这些图层的层级,以便您在收到触摸事件时可以更新其位置。
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
{
CGPoint current = [[touches anyObject] locationInView:parentView];
[lineLayer setPosition:CGPointMake(current.x, [lineLayer position].y)];
[dotLayer setPosition:CGPointMake(current.x, [self yForStockPriceAtPoint:current])];
[super touchesMoved:touches withEvent:event];
}