こんにちは、次のようなビュー コントローラーの 1 つで角の半径 CAGradientLayer と境界線の色を使用して、コードでカスタム ボタンを作成しました。
phoneButton = [CustomButton buttonWithType:UIButtonTypeCustom];
phoneButton.frame = CGRectMake(6, 363, 99, 48);
phoneButton.titleLabel.font = [UIFont fontWithName:@"Futura-Medium" size:14];
phoneButton.titleLabel.shadowColor = [UIColor colorWithWhite:0.0 alpha:1.0];
phoneButton.titleLabel.shadowOffset = CGSizeMake(0, 1);
[phoneButton setTitle:@"Phone" forState:UIControlStateNormal];
[phoneButton addTarget:self action:@selector(phone) forControlEvents:UIControlEventTouchUpInside];
gradient = [CAGradientLayer layer];
gradient.frame = phoneButton.bounds;
gradient.cornerRadius = 8;
gradient.borderColor = [[UIColor whiteColor]CGColor];
gradient.borderWidth = 2.0;
gradient.colors = [NSArray arrayWithObjects:(id)[[sharedManager cellGradientEnd] CGColor], (id)[[sharedManager cellGradientStart] CGColor], nil];
[phoneButton.layer insertSublayer:gradient atIndex:0];
[self.view addSubview:phoneButton];
ここで、選択時にボタンの選択/強調表示された色を設定したいと思います。これを行うにはどうすればよいですか。私はUIbuttonサブクラスを作成してsetSelectedをオーバーライドすることを読みましたが、それを行う方法がわかりません。これがcustomButton subclass.mです
#import "CustomButton.h"
@implementation CustomButton
@synthesize sharedManager;
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
sharedManager = [[MySingleton alloc]init];
}
return self;
}
-(void) setHighlighted:(BOOL)highlighted {
if(highlighted) {
NSLog(@"Highlighted");
} else {
NSLog(@"Not Highlighted");
}
[super setHighlighted:highlighted];
}
-(void) setSelected:(BOOL)selected {
if(selected) {
NSLog(@"Selected");
} else {
NSLog(@"Not Selected");
}
[super setSelected:selected];
}
@end
または、選択のボタンを薄暗くするだけでよいでしょうか?ボタンがXibにないことを付け加えておきます。