代码之家  ›  专栏  ›  技术社区  ›  Objective-J

如何将按钮旋转回水平?

  •  1
  • Objective-J  · 技术社区  · 10 年前

    我在做一个圆圈,上面有不同的按钮,间隔相等。 下面是它的样子: enter image description here

    我想让它不旋转。我如何做到这一点?这是代码。

    - (void)drawWheel
    {
        // Drawing the Wheel view
        wheelView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 275, 275)];
        wheelView.center = self.view.center;
        wheelView.layer.cornerRadius = wheelView.frame.size.width / 2.0;
        wheelView.layer.borderColor = [UIColor whiteColor].CGColor;
        //wheelView.layer.borderWidth = 0.5f;
    
        CGFloat angleSize = 2 * M_PI / self.buttons.count;
    
        for(int i = 0; i < self.buttons.count; i++)
        {
            UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, wheelView.frame.size.width / 2.0, 40)];
            label.layer.anchorPoint = CGPointMake(1.0f, 0.5f);
            label.layer.position = CGPointMake(wheelView.bounds.size.width / 2.0, wheelView.bounds.size.height / 2.0);
            label.transform = CGAffineTransformMakeRotation(angleSize * i);
            label.backgroundColor = [UIColor clearColor];
    
            UIButton *button = [self.buttons objectAtIndex:i];
            button.center = CGPointMake(label.center.x, label.center.y + 15);
            button.transform = CGAffineTransformRotate(label.transform, 2 * (angleSize * i));
            [label addSubview:button];
            [wheelView addSubview:label];
        }
    
        [self.view addSubview:wheelView];
    }
    
    2 回复  |  直到 10 年前
        1
  •  3
  •   Zhans    10 年前

    我没有检查,但你能更改以下代码吗

    button.transform = CGAffineTransformRotate(label.transform, 2 * (angleSize * i));

    button.transform = CGAffineTransformMakeRotation(-1 * angleSize * i);

    我只是把你的按钮转到相反的方向

        2
  •  2
  •   Fogmeister    10 年前

    你可以这样做我想。。。

    - (void)drawWheel
    {
        // Drawing the Wheel view
        wheelView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 275, 275)];
        wheelView.center = self.view.center;
        wheelView.layer.cornerRadius = wheelView.frame.size.width / 2.0;
        wheelView.layer.borderColor = [UIColor whiteColor].CGColor;
        //wheelView.layer.borderWidth = 0.5f;
    
        CGFloat angleSize = 2 * M_PI / self.buttons.count;
    
        for(int i = 0; i < self.buttons.count; i++)
        {
            UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, wheelView.frame.size.width / 2.0, 40)];
            label.layer.anchorPoint = CGPointMake(1.0f, 0.5f);
            label.layer.position = CGPointMake(wheelView.bounds.size.width / 2.0, wheelView.bounds.size.height / 2.0);
            label.transform = CGAffineTransformMakeRotation(angleSize * i);
            label.backgroundColor = [UIColor clearColor];
    
            UIButton *button = [self.buttons objectAtIndex:i];
            button.center = CGPointMake(label.center.x, label.center.y + 15);
    
            // change this line
            button.transform = CGAffineTransformMakeRotation(-angleSize * i);
    
            [label addSubview:button];
            [wheelView addSubview:label];
        }
    
        [self.view addSubview:wheelView];
    }
    

    这里我只是用相同的角度在另一个方向上变换按钮。

    即如果标签旋转35度,则按钮旋转-35度。这意味着按钮相对于标签的上一页旋转了0度。