5

円形の画像にアーチ型の を作成する必要がありUIButtonsます (O/p は同心円のように見える必要があります)。

現在、私は 5 つの画像を使用していますが、将来的にはさらに画像を追加する可能性があります。追加した画像で円の画像を動的に塗りつぶす必要があります。

サンプルのコードがあり、O/P は下の画像です

int numberOfSections = 6;
    CGFloat angleSize = 2*M_PI/numberOfSections;
 for (int j = 0; j < numberOfSections; ++j) {
        UIButton *sectionLabel = [[UIButton alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 150.0f, 2.0f)];
sectionLabel.backgroundColor = [UIColor redColor];
 sectionLabel.layer.anchorPoint = CGPointMake(1.0f, 0.5f);
        sectionLabel.layer.position = CGPointMake(container.bounds.size.width/2.0, container.bounds.size.height/2.0); // places anchorPoint of each label directly in the center of the circle.
        sectionLabel.transform = CGAffineTransformMakeRotation(angleSize*j);
        [container addSubview:sectionLabel];
    }

上記のコードの画像

このコードを試してみましたが、O/P は下の画像です

 int numberOfSections = 5;
    CGFloat angleSize = 2*M_PI/numberOfSections;
    for (int j = 0; j<numberOfSections; ++j) {
        UIImage *imageframe = [imagesArray objectAtIndex:j];
OBShapedButton *button = [[OBShapedButton alloc] initWithFrame:CGRectMake(0.0f, 150.0f, 150.0f, 128.0f)];
button.transform = CGAffineTransformMakeRotation(angleSize*j);
[container addSubview:button];
}

2枚目の画像

下の画像のような出力が必要です 3枚目の画像

どうすればそれを達成できますか

サラ・ズオのコードで試した後のO/P

サラ・ズオ・コード

同じ幅と高さSarah Zuo コード 2 番目の回答
のボタン

4

4 に答える 4

4

最後の部分しかお答えできませんが、

ボタンの画像を取得できる場合は、このチュートリアルを参照できます。これはあなたを助けるかもしれません。形成された画像の背景が透明である場合。

于 2012-09-25T09:47:22.330 に答える
2
float radius = container.bounds.size.width / 2;
int numberOfSections = 5;
CGFloat angleSize = 2*M_PI/numberOfSections;
for (int j = 0; j<numberOfSections; ++j) {
    UIImage *imageframe = [imagesArray objectAtIndex:j];
    OBShapedButton *button = [[OBShapedButton alloc] initWithFrame:CGRectMake(0.0f, 150.0f, 150.0f, 128.0f)];

    button.transform = CGAffineTransformMakeRotation(2*M_PI-angleSize*j);
    button.center = CGPointMake(radius + radius * sin(angleSize * j) / 2, radius +  radius * cos(angleSize * j) / 2);
    [container addSubview:button];
}

このコードを試してください。

于 2012-09-25T09:57:57.537 に答える
1

の代わりに使用できますUIImageView。画像ビューに別のものを与え、 Gesture Recognizertagを追加できます。画像ビューでボタン クリック イベントなどのタッチ イベントを取得できるようになりました。

于 2012-09-25T09:18:29.893 に答える
1

すべてのボタンの画像が同じ (同じ方向) に見える場合は、変換値が機能している可能性があります。

button.transform = CGAffineTransformMakeRotation(2*M_PI-angleSize*j);
button.center = CGPointMake(radius + radius * sin(angleSize * j) / 2, radius +  radius * cos(angleSize * j) / 2);

ボタンスライス

于 2012-09-26T06:12:29.843 に答える