gpt4 book ai didi

ios - 更改 UIBezierArc 颜色,当它的 handle 仅从 handle 内部或外部绘制时

转载 作者:行者123 更新时间:2023-11-29 11:37:18 25 4
gpt4 key购买 nike

我有一个圆形 slider ,其中绘制了一条贝塞尔弧,一个圆弧在 slider 的起点和终点有两个 handle ,圆弧是在圆形 slider 中绘制的。

借助开始和结束 handle ,我可以沿着圆形 slider 绘制贝塞尔曲线。

我只想在从 handle 向内拖动 45 度或向外拖动 45 度时更改圆弧的颜色,而在圆形 slider 中拖动时不应更改圆弧的颜色。

注意 - 向内和向外拖动时不应改变其他 slider 弧的颜色。

只有在向内和向外拖动时,颜色才应该改变,而不是在圆形拖动时。

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesMoved:touches withEvent:event];
_dragging = YES;

if (!self.isDragging)
{
return;
}

if ([self.delegate respondsToSelector:@selector(sliderDraggin:)])
{
[self.delegate sliderDraggin:self];
}

UITouch *touch = [touches anyObject];
//UITouch *touch = [touches anyObject];

NSUInteger nearestHandleIndex = [self indexOfNearesPointForTouch:touch];
_nearesHandle = (nearestHandleIndex != NSNotFound) ? _handles[@(nearestHandleIndex)] : nil;


CGPoint location = [touch locationInView:self];
CGFloat distance = [_math distanceBetweenPoint:_centerPoint andPoint:location];



CGFloat inOff = _radius - _sliderWidth - _offset.inside;
CGFloat outOff = _radius + _offset.outside;

if (distance < inOff || distance > outOff)
{
if (self.isNeedToRevoke)
{
_dragging = NO;
return;
}
}

dispatch_async(dispatch_get_main_queue(), ^{
int a = AngleFromNorth(_centerPoint, location, EVA_FLIPPED);
[self moveView:_nearesHandle toAngle:a];

[self drawArc];
});

[self informDelegateAboutHandles];
}

最佳答案

您已经计算了 distance .

  1. 所以,首先,如果它小于 < inOff,不要退出或 > outOff .

  2. 相反,根据 distance 设置颜色,也许:

    UIColor *arcColor;

    if (distance < (inOff - 45)) {
    arcColor = [UIColor redColor];
    } else if (distance > (outOff + 45)) {
    arcColor = [UIColor redColor];
    } else {
    arcColor = [UIColor greenColor];
    }

    显然,您可以根据需要调整逻辑,但这可能是基本思想。

  3. 使用这个 arcColor更新您的绘图例程使用的任何颜色特定属性。


我不知道你是如何渲染这些弧线的,但是 this repo包含更新 strokeColor 的示例应用程序的 CAShapeLayer对于基于触摸的各个弧,产生以下结果:

enter image description here

我不会太担心协调我的实现与您的实现,但它只是说明了上面显示的模式,您可以在其中计算要在 touchesBegan 中更新的弧线并更新 touchesMoved 中的颜色.

关于ios - 更改 UIBezierArc 颜色,当它的 handle 仅从 handle 内部或外部绘制时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48406435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com