0

嗨,我正在尝试在 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 弧度 = atan2f(container.transform.b,container.transform.a);) 对于 CGFloat 弧度 = atan2f (container.transform.d,container.transform.c); 我能够从底部获得该部门

4

1 回答 1

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];
于 2014-12-22T21:40:33.667 回答