27

QuartzCore を使用してボタンの色を変更できるカスタム UIButton を作成するメソッドがあります。ただし、ボタンを押しても強調表示されません。

- (UIButton *)makeHeaderButton {
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    UIFont *textFont = [UIFont boldSystemFontOfSize:12];
    UIColor *textColor = [UIColor colorWithRed:80/255.0 green:109/255.0 blue:145/255.0 alpha:1.0];
    UIColor *backgroundColor = [UIColor colorWithRed:250/255.0 green:250/255.0 blue:250/255.0 alpha:1.0];
    [button setTitleColor:textColor forState:UIControlStateNormal];
    button.titleLabel.font = textFont;
    button.autoresizesSubviews = YES;
    button.layer.cornerRadius = 8;
    button.layer.borderWidth = 1;
    // next 2 properties set using QuartzCore class, no other way to set button colors
    button.layer.borderColor = [UIColor grayColor].CGColor;
    button.layer.backgroundColor = backgroundColor.CGColor;
    button.clipsToBounds = YES;
    return button;
}

これらのボタンを通常の丸い長方形ボタンのように強調表示するにはどうすればよいですか?

4

7 に答える 7

13

コードに次の行を追加しますbutton.showsTouchWhenHighlighted = TRUE;

于 2012-12-30T03:02:35.790 に答える
6

それでも問題が発生する場合は、次のように UIButton を作成する必要があります。

UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];

btn.layer.cornerRadius = 4;
btn.layer.masksToBounds = YES;

[btn setTranslatesAutoresizingMaskIntoConstraints:NO];

[btn setBackgroundColor:[UIColor greenColor]];
[btn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];

[btn setTitle:@"ok" forState:UIControlStateNormal];

*** any customisation that you would like ***

[parentView addSubview: btn];

このようにして、iOS がすべての強調表示を処理します。主なものは使用しています

[UIButton buttonWithType:UIButtonTypeSystem];

initWithFrame またはその他のメソッドを使用する場合は、実装する必要があります

setTitleColor: forState: 
setBackgroundImage: forState:
于 2015-07-21T11:21:55.363 に答える
-6

Storyboard で、ボタンの背景の既定の画像と強調表示された画像を設定します。ボタンアクションでこの行を書きます。つまり、ボタンの色を1秒間変更します

[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]];
于 2014-11-13T08:28:18.460 に答える