0

私のコードは少し異なりますが、私はこのようなプッシュオンプッシュオフのようなボタンを作成しようとしています:

UIButton* alertsButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
alertsButton.frame = CGRectMake(170, 43.5, 130, 130);
[alertsButton.titleLabel setFont:[UIFont fontWithName:@"Novecento wide" size:22]];
[alertsButton setTitle:NSLocalizedString(@"Alerts", nil) forState:UIControlStateHighlighted];
[alertsButton setTitle:NSLocalizedString(@"Alerts", nil) forState:UIControlStateNormal];
[alertsButton setTitle:NSLocalizedString(@"Alerts", nil) forState:UIControlStateSelected];
[alertsButton addTarget:self action:@selector(toggleAlerts:)forControlEvents:UIControlEventTouchUpInside];

-(void)toggleAlerts:(id)sender
{
    UIButton *button = (UIButton *)sender;

    if (button.selected) {
        button.selected = NO;
        [button setImage:[UIImage imageNamed:@"off.png"] forState:UIControlStateNormal];
        [button.titleLabel setFont:[UIFont fontWithName:@"Novecento wide" size:22]];
        NSLog(button.titleLabel.text);
    } else {
        button.selected = YES;
        [button setImage:[UIImage imageNamed:@"on.png"] forState:UIControlStateNormal];
        [button.titleLabel setFont:[UIFont fontWithName:@"Novecento wide" size:22]];
        NSLog(button.titleLabel.text);
    }
}

ボタンを押すと、期待どおりに背景が変わりますが、デバッグコンソールにテキストが表示されているのにラベルが消えます。結果なしでこれを試しました:(

4

2 に答える 2

1

これは、画像がラベルをオーバーアルプしているためです。

それ以外の[button setImage:[UIImage imageNamed:@"on.png"] forState:UIControlStateNormal];

書きます[button setBackgroundImage:[UIImage imageNamed:@"on.png"] forState:UIControlStateNormal];

于 2012-04-19T20:23:38.757 に答える
0

オンとオフの画像のサイズはどれくらいですか?

大きすぎると、テキストが表示されなくなります。Nikitaが言ったように、画像が背景であると想定される場合は、setBackgroundImageメソッドを使用します

于 2012-04-19T20:25:54.040 に答える