3

私はこのコードを持っていて、ボタンを正方形にしたいのですが、ナビゲーションバーの下にもあります。

前もって感謝します!

ボタンを正方形にしたい

- (void)viewDidLoad
{
[super viewDidLoad];



int rows = 13, columns = 4;
UIView *buttonView = [[UIView alloc] initWithFrame:CGRectMake(0.f, 0.f, 70*columns, 70*rows)];
for (int y = 0; y < rows; y++) {
    for (int x = 0; x < columns; x++) {
        UIButton * button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        button.frame = CGRectMake(70 * x, 28 * y, 70, 28);

        [button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
        [buttonView addSubview: button];

    }
 }

// Center the view which contains your buttons
CGPoint centerPoint = buttonView.center;
centerPoint.x = self.view.center.x;
buttonView.center = centerPoint;
[self.view addSubview:buttonView];    

}


-(void)buttonPressed:(UIButton *)button
{
NSLog(@"button %u -- frame: %@", button.tag, NSStringFromCGRect(button.frame));
}

編集2

ボーダーを使用するとエラーが発生します

    [button.layer setBorderWidth:1.0]; 
    [button.layer setBorderColor:[UIColor blackColor]];

ここに画像の説明を入力してください

4

3 に答える 3

1

整数変数を定義し、これをボタンタイトルとして設定します

int rows = 13, columns = 4;
int number=1;
UIView *buttonView = [[UIView alloc] initWithFrame:CGRectMake(0.f,44, 70*columns, 70*rows)];
for (int y = 0; y < rows; y++) {
    for (int x = 0; x < columns; x++) {
        UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];
        button.frame = CGRectMake(75 * x, 75 * y, 70, 70);
        button.backgroundColor=[UIColor redColor];
        [button setTitle:[NSString stringWithFormat:@"%d",number] forState:UIControlStateNormal];

        button.tag=number;
        [button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
        [buttonView addSubview: button];
        number++;
    }
}

これが次の画面に移動するのに役立つことを願っています。Button.tagは、選択した正確なボタンを示します。

于 2012-06-20T05:22:11.213 に答える
0

サイズ70x28のボタンを設定しているので、ボタン70x70が必要な場合は、button.frame = CGRectMake(70 * x、70 * y、70、70)を変更する必要があります。これにより、正方形のボタンが作成されます。

また、これがナビゲーションバーなのか、それとも単なるツールバーなのか。NavigationBarを使用するNavigationControllerを使用する場合、Apple独自のSDKでは簡単に上書きできません。

いずれの場合も、y = 44から下にボタンを描画し始めるだけで、ボタンがツールバーと重なることはありません。

于 2012-06-19T14:46:04.340 に答える
0

これを試して

int rows = 13, columns = 4;  
UIView *buttonView = [[UIView alloc] initWithFrame:CGRectMake(0.f,44, 70*columns, 70*rows)];
for (int y = 0; y < rows; y++) {
    for (int x = 0; x < columns; x++) {
        UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];
        button.frame = CGRectMake(75 * x, 75 * y, 70, 70);
        button.backgroundColor=[UIColor redColor];
        [button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
        [buttonView addSubview: button];

    }
}

// Center the view which contains your buttons
CGPoint centerPoint = buttonView.center;
centerPoint.x = self.view.center.x;
buttonView.center = centerPoint;
[self.view addSubview:buttonView]; 

レイヤープロパティを使用するには、プロジェクトにQuartzCore.frameworkを追加する必要があります。

于 2012-06-19T15:28:43.630 に答える