停止旋钮旋转超过xyz度,防止它从0度向后旋转

时间:2012-02-06 03:54:16

标签: objective-c

有没有人知道如何让这个代码停止旋转旋转超过xyz度,例如停止旋转340度而不是完全旋转360度所以你不能一直转动它?我正在尝试制作一个可转动的旋钮。它有效,但目前它没有被钳制,所以有人可以继续向前和向后转动它。我想阻止它这样做,所以有一个最小值和最大值。

- (void)rotating:(KTOneFingerRotationGestureRecognizer *)recognizer {

    [self doRotation:recognizer.rotation];    
    [recognizer setRotation:0];
}

- (void)doRotation:(float)rot {

    CGFloat theAngle = atan2(knob.transform.b, knob.transform.a);

    float temp_var = RADIANS_TO_DEGREES(theAngle);

    if(temp_var < 0) temp_var = 360 - fabs(temp_var);

    float percent = (temp_var / 315) * 100;
    float val = ((float)(percent))/100;

    knob.transform = CGAffineTransformRotate([knob transform], rot);

    if(percent < 100 && percent > 0) { 
        display.text = [[NSString alloc] initWithFormat:@"%.f", percent];
    }
}

2 个答案:

答案 0 :(得分:0)

如果旋转大于340°,您只想停止旋转?只需检查temp_var是否大于340,然后返回该方法。您还应考虑将其重命名为degrees或更明显的内容。

if(temp_var < 0) temp_var = 360 - fabs(temp_var);
// add this next line:
if (temp_var > 340) { return; }

float percent = (temp_var / 315) * 100;

答案 1 :(得分:0)

我有一个可旋转的旋钮示例,您可以下载。它完全符合您的描述。

https://github.com/mattneub/Programming-iOS-4-Book-Examples/blob/master/convertedToIOS5/p618p635knob/p618p635knob/MyKnob.m