0

ここに画像の説明を入力回転ホイールを使用しているiPadアプリを開発しています。このリンクhttp://www.raywenderlich.com/9864/how-to-create-a-rotating-wheel-control-with-uikitにあるコードを使用しました。これで、回転ホイールのフレームサイズを大きくしました。以下のコードを使用しました

SMRotaryWheel *wheel = [[SMRotaryWheel alloc] initWithFrame:CGRectMake(0, 0, 400, 400)  
                                                andDelegate:self 
                                               withSections:8];

wheel.center = CGPointMake(400,300);
[self.view addSubview:wheel];

これにより、画像サイズが大きくなります。回転用ホイールは同サイズです。ホイールサークルを大きくしたい。以下のコードを使用してホイールを描画しました。Plsは私がするのを手伝ってください.

 - (void) drawWheel {
    container = [[UIView alloc] initWithFrame:self.frame];

    CGFloat angleSize = 2*M_PI/numberOfSections;

    for (int i = 0; i < numberOfSections; i++) {
        UIImageView *im = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"segment.png"]];

        im.layer.anchorPoint = CGPointMake(1.0f, 0.5f);
        im.layer.position = CGPointMake(container.bounds.size.width/2.0-container.frame.origin.x, 
                                        container.bounds.size.height/2.0-container.frame.origin.y); 
        im.transform = CGAffineTransformMakeRotation(angleSize*i);
        im.alpha = minAlphavalue;
        im.tag = i;

        if (i == 0) {
            im.alpha = maxAlphavalue;
        }

        UIImageView *cloveImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 120, 120)];
        cloveImage.image = [UIImage imageNamed:[NSString stringWithFormat:@"icon%i.png", i]];
        [im addSubview:cloveImage];

        [container addSubview:im];
    }

    container.userInteractionEnabled = NO;
    [self addSubview:container];

    cloves = [NSMutableArray arrayWithCapacity:numberOfSections];

    UIImageView *bg = [[UIImageView alloc] initWithFrame:self.frame];
    bg.image = [UIImage imageNamed:@"bg.png"];
    [self addSubview:bg];

    UIImageView *mask = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 58, 58)];
    mask.image =[UIImage imageNamed:@"centerButton.png"] ;
    mask.center = self.center;
    mask.center = CGPointMake(mask.center.x, mask.center.y+3);
    [self addSubview:mask];

    if (numberOfSections % 2 == 0) {

        [self buildClovesEven];
    } else {

        [self buildClovesOdd];
    }

    [self.delegate wheelDidChangeValue:[self getCloveName:currentValue]]; 
}

灰色の円を外側の青い円まで拡大する必要があります。

4

2 に答える 2

1

私は専門家ではありませんが、これが私が行った方法です。ラベルを使用したことを念頭に置いていますが、サイズは問題なく変更されます。うまくいけば、あなたはこれからいくらかの助けを得ることができます

for (int i = 0; i < numberOfSections; i++) {
    UIImageView *im = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"segment.png"]];
    im.frame = CGRectMake( 0 ,0, self.frame.size.width / 2.2,  M_PI * (container.frame.size.width   / numberOfSections) );
    im.layer.anchorPoint = CGPointMake(1.0f, 0.5f);
    im.layer.position = CGPointMake(container.bounds.size.width/2.0-container.frame.origin.x,
                                    container.bounds.size.height/2.0-container.frame.origin.y);
    im.transform = CGAffineTransformMakeRotation(angleSize*i);
    im.tag = i;
    [container addSubview:im];
}

これにより、セクションのサイズが正しいサイズに変更されます。

目的の効果を得るには、値をいじる必要がある場合があります。問題は元の画像の曲線であり、クリッピングが発生します。おそらくより良い方法は、画像を動的に描画することですが、私はまだこれを自分で行う方法を学んでいます。

于 2012-12-06T10:14:20.403 に答える
0

セクター イメージのサイズを大きくすることで、この問題を修正しました。今、私は大きな車輪を手に入れました。ホイールは、セクターに使用した画像のサイズに基づいています。ご協力ありがとうございます

于 2012-12-19T05:45:52.743 に答える