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;
}
これらのボタンを通常の丸い長方形のボタンのように強調表示するにはどうすればよいですか?
ベストアンサー1
Swift では、isHighlighted
var をオーバーライドしてアルファアニメーションを追加することもできます。
override var isHighlighted: Bool {
didSet {
UIView.animate(withDuration: 0.25, delay: 0, options: [.beginFromCurrentState, .allowUserInteraction], animations: {
self.alpha = self.isHighlighted ? 0.5 : 1
}, completion: nil)
}
}