ios分类(Categories)和类扩展(Extensions)的区别
来源:互联网 发布:linux find type f 编辑:程序博客网 时间:2024/05/01 19:50
最近在写一个项目,需要写一个公共的方法将十六进制的颜色转换为UIColor,但系统的UIKit框架里面没有这种直接转化的方法,我们又无法在系统的UIColor里面添加这个公共的方法,于是想到了category,顺便总结了下extension。
1.首先介绍一下分类:
新建一个objective-c File
@interface UIColor(Hex)
+ (UIColor *)colorWithHexString: (NSString *)hexString;
@end
.m实现代码如下
#import "UIColor+Hex.h"
@implementation UIColor(Hex)
#pragma mark - 颜色转换 iOS中十六进制的颜色转换为UIColor
+ (UIColor *)colorWithHexString:(NSString *)hexString
{
NSString *cString = [[hexString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];
// hexString应该6到8个字符
if ([cString length] < 6) {
return [UIColor clearColor];
}
// 如果hexString 有@"0X"前缀
if ([cString hasPrefix:@"0X"])
cString = [cString substringFromIndex:2];
// 如果hexString 有@"#""前缀
if ([cString hasPrefix:@"#"])
cString = [cString substringFromIndex:1];
if ([cString length] != 6)
return [UIColor clearColor];
//RGB转换
NSRange range;
range.location = 0;
range.length = 2;
//R
NSString *rString = [cString substringWithRange:range];
//G
range.location = 2;
NSString *gString = [cString substringWithRange:range];
//B
range.location = 4;
NSString *bString = [cString substringWithRange:range];
//
unsigned int r, g, b;
[[NSScanner scannerWithString:rString] scanHexInt:&r];
[[NSScanner scannerWithString:gString] scanHexInt:&g];
[[NSScanner scannerWithString:bString] scanHexInt:&b];
return [UIColor colorWithRed:((float) r / 255.0f) green:((float) g / 255.0f) blue:((float) b / 255.0f) alpha:1.0f];
}
@end
这样就可以实现将十六进制的颜色转换为UIColor
2.类扩展能为某个类附加额外的属性,一般的类扩展写在.m文件中,通过这种方式写的属性属于类的私有属性,不能被外界访问。格式如下:
@interface 类名()
//属性
@end
注意二者显著区别在于分类的写法类名的后面()中要有分类名字,而类扩展没有。
- ios分类(Categories)和类扩展(Extensions)的区别
- 谈谈iOS中Categories(分类)、Extensions(类扩展)和继承的区别
- 谈谈iOS中Categories(分类)、Extensions(类扩展)和继承的区别
- iOS分类和扩展(Categories和Extensions)
- iOS分类和扩展(Categories和Extensions)
- iOS分类和扩展(Categories和Extensions)
- iOS分类和扩展(Categories和Extensions)
- iOS分类和扩展(Categories和Extensions)
- iOS分类和扩展(Categories和Extensions)
- iOS中Categories和Extensions的区别
- iOS - Categories&&Extensions (类别和扩展)
- iOS 分类(Categories)与类的拓展 ( Extensions)
- iOS 类别和扩展(Categories和Extensions)
- iOS 类别和扩展(Categories和Extensions)
- iOS 类别和扩展(Categories和Extensions)
- iOS 类别和扩展(Categories和Extensions)
- iOS 类别和扩展(Categories和Extensions)
- iOS 类别和扩展(Categories和Extensions)
- ios实现视图的拖拽、缩放、旋转
- 2017.7.12 && 笔记
- 微信支付-商户后台(1)
- thinkPHP,怎么把json文件里面的数据导入数据库
- log4cpp编译错误整理
- ios分类(Categories)和类扩展(Extensions)的区别
- Java基础(三)重载和重写
- 事件对象
- java实现对称加密
- 《软件设计师教程最新版(第三版》
- 东软JavaWeb实训记-DAY1-java语法、集合(List&Map)
- LeetCode: 605. Can Place Flowers
- hdu1159 Common Subsequence 最长公共子序列 经典DP
- 安装Centos7时提示 /dev/root does not exits