在做自定义UIButton的时候,想要做点击时的按钮背景颜色和 非点击时的背景色。
按钮只 提供setBackImage:forstate这个方法,只有setBackgroundColor.
做一个UIView转化成UIImage来适应这个方法;
- (void)newCustomButton{
CGRect rect = CGRectMake(110.f, 110.f, 74.f, 40.f);
UIButton *button = [[UIButton alloc] initWithFrame:rect];
[button setTitle:@"button" forState:UIControlStateNormal];
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[button setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted];
button.layer.cornerRadius = 5.0f;
[button setBackgroundColor:[UIColor redColor]];
// button.layer.borderColor = 1.0f;
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0.f, 0.f, 74.f, 40.f)];
view.layer.cornerRadius = 5.0f;
view.backgroundColor = [UIColor orangeColor];
UIImage *image = [self imageWithUIView:view];
[button setBackgroundImage:image forState:UIControlStateHighlighted];
[self.view addSubview:button];
}
//UIView 转化成UIImage
- (UIImage*)imageWithUIView:(UIView*) view{
// 创建一个bitmap的context
// 并把它设置成为当前正在使用的context
UIGraphicsBeginImageContext(view.bounds.size);
CGContextRef currnetContext = UIGraphicsGetCurrentContext();
//[view.layer drawInContext:currnetContext];
[view.layer renderInContext:currnetContext];
// 从当前context中创建一个改变大小后的图片
UIImage* image = UIGraphicsGetImageFromCurrentImageContext();
// 使当前的context出堆栈
UIGraphicsEndImageContext();
return image;
}
本文介绍如何使用UIView创建自定义的UIButton,并实现不同状态下的背景颜色变化。通过将UIView转换为UIImage,可以为按钮的不同状态设置特定的背景图像。

423

被折叠的 条评论
为什么被折叠?



