美文网首页iOS 艾欧艾斯专注iOS开发(OC/Swift)
给UIButton设置BackgroundColor:forSt

给UIButton设置BackgroundColor:forSt

作者: 洲洲哥 | 来源:发表于2016-03-16 18:29 被阅读129次

本文首发地址
洲洲哥在写这篇文章的时候,我想起了之前写过的一篇文章
《 iOS给UIButton添加一个新的属性》,大家在读这篇文章前可以先复习一下哦。。。。

今天带来的就是利用延展做一个偷懒的事情。。
在开发过程中要设置一个uibutton的背景颜色并且要分当前按钮的状态的时候。那写的就是相当费劲的。不过哥吃饱了。这种费力讨好的事情 就让洲洲哥代劳吧!!!

废话不多说,上代码。。。<各位此处应该有笑声,,如果有请持续5秒钟>
先看看 利用这个延展的调用代码:

 [self.itemBtn setBackgroundColor:YSColor(254, 245, 245) forState:UIControlStateNormal];
 [self.itemBtn setBackgroundColor:YSColor(252, 94, 94) forState:UIControlStateSelected];

和我们平常设置button的时候一样,so easy

  [self.itemBtn setTitleColor:YSColor(110, 110, 110) forState:UIControlStateNormal];
  [self.itemBtn setTitleColor:YSColor(255, 255, 255) forState:UIControlStateSelected];

下面开始展示代码咯
添加一个延展名字当然是对uibutton的延展咯(这里同时也对button添加了一个titleNmae的属性)
首先看.h文件的写法

#import <UIKit/UIKit.h>

@interface UIButton (FillColor)
- (void)setBackgroundColor:(UIColor *)backgroundColor forState:(UIControlState)state;

@property (nonatomic, strong) NSString * titleName;
@end

下面是.m的写法

#import "UIButton+FillColor.h"
#import "objc/runtime.h"

static const void * titleNameBy = &titleNameBy;
@implementation UIButton (FillColor)
@dynamic titleName;
// 添加自定义属性
-(void)setTitleName:(NSString *)titleName {
    objc_setAssociatedObject(self, titleNameBy, titleName, OBJC_ASSOCIATION_COPY_NONATOMIC);
}
-(NSString *)titleName {
    return objc_getAssociatedObject(self, titleNameBy);
}
// 设置背景颜色for state
- (void)setBackgroundColor:(UIColor *)backgroundColor forState:(UIControlState)state {
    [self setBackgroundImage:[UIButton imageWithColor:backgroundColor] forState:state];
}
// 设置颜色
+ (UIImage *)imageWithColor:(UIColor *)color {
    CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    
    CGContextSetFillColorWithColor(context, [color CGColor]);
    CGContextFillRect(context, rect);
    
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    
    return image;
}

@end

上面就是咯,这次装逼到此结束。掌声吧各位。

提高更多装逼能力,请关注我的微信公众号,不定期发送洲洲哥在工作中遇见问题的解决方法和干货哦
如有问题可添加我的QQ:1290925041
还可添加QQ群:234812704(洲洲哥学院)
欢迎各位一块学习,提高逼格!
也可以添加洲洲哥的微信公众号

洲洲哥的OSjoin.jpg

相关文章

网友评论

  • 木子影:扩展这个方法要用runtime么
    洲洲哥:@木子影 不用,,,用延展即可

本文标题:给UIButton设置BackgroundColor:forSt

本文链接:https://www.haomeiwen.com/subject/cunqlttx.html