我创建了一个按钮,我希望在用户点击时更改其颜色.我看到了选项“setimagebackground … forstate ……”,但没有其他选项可以改变背景颜色.我在viewdidload中更改了y按钮的值,当我使用“settint color:[uicolor redcolor]”时,没有任何反应.
我该怎么解决?
这是我的代码:
我该怎么解决?
这是我的代码:
button1.layer.borderColor = [[UIColor purpleColor]CGColor]; button1.layer.cornerRadius = 8.0f; button1.layer.masksToBounds = YES; button1.layer.borderWidth = 1.0f; [button1.tintColor = [UIColor redColor]CGColor]; [button1 setTintColor:[UIColor blueColor]]; [button1 setTitleColor:[UIColor cyanColor] forState:UIControlStateNormal]; [button1 setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted]; [button1 setTintColor:[UIColor redColor]];
谢谢!
解决方法
有了图片:
[button1 setBackgroundImage:[UIImage imageNamed:@"redButton.png"]];
没有图片:
[button1 setBackgroundColor:[UIColor redColor] ];
有了这个你可以得到圆形边框:
CALayer * layer = [button1 layer]; [layer setCornerRadius:8.0f]; [layer setMasksToBounds:YES]; [layer setBorderWidth:1.0f]; [layer setBorderColor:[[UIColor whiteColor] CGColor]]; button1.backgroundColor = [UIColor redColor];
对于选定的状态子类UIButton,以这种方式:
在.h文件中:
@interface MyButton : UIButton { @private NSMutableDictionary *backgroundStates; @public } - (void) setBackgroundColor:(UIColor *) _backgroundColor forState:(UIControlState) _state; - (UIColor*) backgroundColorForState:(UIControlState) _state; @end
在.m文件中:
#import "MyButton.h" @implementation MyButton - (void) setBackgroundColor:(UIColor *) _backgroundColor forState:(UIControlState) _state { if (backgroundStates == nil) backgroundStates = [[NSMutableDictionary alloc] init]; [backgroundStates setObject:_backgroundColor forKey:[NSNumber numberWithInt:_state]]; if (self.backgroundColor == nil) [self setBackgroundColor:_backgroundColor]; } - (UIColor*) backgroundColorForState:(UIControlState) _state { return [backgroundStates objectForKey:[NSNumber numberWithInt:_state]]; } #pragma mark - #pragma mark Touches - (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [super touchesBegan:touches withEvent:event]; UIColor *selectedColor = [backgroundStates objectForKey:[NSNumber numberWithInt:UIControlStateHighlighted]]; if (selectedColor) { CATransition *animation = [CATransition animation]; [animation setType:kCATransitionFade]; [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; [self.layer addAnimation:animation forKey:@"EaseOut"]; self.backgroundColor = selectedColor; } } - (void) touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event { [super touchesCancelled:touches withEvent:event]; UIColor *normalColor = [backgroundStates objectForKey:[NSNumber numberWithInt:UIControlStateNormal]]; if (normalColor) { CATransition *animation = [CATransition animation]; [animation setType:kCATransitionFade]; [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; [self.layer addAnimation:animation forKey:@"EaseOut"]; self.backgroundColor = normalColor; } } - (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { [super touchesEnded:touches withEvent:event]; UIColor *normalColor = [backgroundStates objectForKey:[NSNumber numberWithInt:UIControlStateNormal]]; if (normalColor) { CATransition *animation = [CATransition animation]; [animation setType:kCATransitionFade]; [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; [self.layer addAnimation:animation forKey:@"EaseOut"]; self.backgroundColor = normalColor; } } - (void) dealloc { [backgroundStates release]; [super dealloc]; } @end
然后在ViewController中(记住要包含您的自定义类),您可以这样设置颜色:
[button1 setBackgroundColor:[UIColor colorWithRed:0.8 green:0.7 blue:0.6 alpha:1.0] forState:UIControlStateHighlighted];
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。