Остановите поворот ручки на угол выше xyz и предотвратите поворот назад на 0 градусов - PullRequest
0 голосов
/ 06 февраля 2012

Кто-нибудь знает, как заставить этот код остановить вращение ручки за пределы градусов 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 голосов
/ 06 февраля 2012

У меня есть пример вращающейся ручки, который вы можете скачать.Это именно то, что вы описываете.

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

0 голосов
/ 06 февраля 2012

Вы просто хотите остановить вращение, если оно больше 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...