如何使用UIKit创建旋转车轮控制

时间:2014-05-06 02:21:09

标签: objective-c ios7 rotation roulette-wheel-selection

您好我正在尝试在iOS中创建一个旋转轮,我找到了这个很棒的教程 How to Create a Rotation Wheel Control 它非常好而且完整,但在这种情况下,所选对象位于左侧,需要右侧的对象。

所以我想知道是否有人知道我需要改变什么才能选择那个方面

在示例中我们可以在endtrackingWithTouch事件中看到以下代码

// 1 - Get current container rotation in radians
CGFloat radians = atan2f(container.transform.b,container.transform.a);
NSLog(@"Radians %f", radians);
// 2 - Initialize new value
CGFloat newVal = 0.0;
// 3 - Iterate through all the sectors
for (SMSector *s in sectors) {
    // 4 - Check for anomaly (occurs with even number of sectors)
    if (s.minValue > 0 && s.maxValue < 0) {
        if (s.maxValue > radians || s.minValue < radians) {
            // 5 - Find the quadrant (positive or negative)
            if (radians > 0) {
                newVal = radians - M_PI;
            } else {
                newVal = M_PI + radians;
            }
            currentSector = s.sector;
        }
    }
    // 6 - All non-anomalous cases
    else if (radians > s.minValue && radians < s.maxValue) {
        newVal = radians - s.midValue;
        currentSector = s.sector;
    }
}

对于弧度进行数学运算并比较我们得到所选扇区的扇区中的最小值和最大值,如果我为CGFloat更改(CGFloat radians = atan2f(container.transform.b,container.transform.a);) radians = atan2f(container.transform.d,container.transform.c);我能够从底部获得该部门

1 个答案:

答案 0 :(得分:1)

我认为您可以简单地将您的滚轮放在另一个视图中并将此视图旋转一个PI。像这样:

UIView *testView = [[UIView alloc]initWithFrame:CGRectMake(10, 80,300, 300)];
SMRotaryWheel *wheel = [[SMRotaryWheel alloc] initWithFrame:CGRectMake(0, 0,300, 300)
                                                    andDelegate:self 
                                                   withSections:5];
[testView addSubview:wheel];
testView.transform = CGAffineTransformMakeRotation(M_PI);
[self.view addSubview:testView];