UIView 转化成UIImage

来源:互联网 发布:绍兴用友软件 编辑:程序博客网 时间:2024/06/12 19:07

在做自定义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;}


0 0
原创粉丝点击