简述
类别是一种为现有类添加新方法的方式,我们有时可以见到“类名称+类别名称”的命名方式。
类别可以添加属性property
,但是不能添加实例变量。
一个实用的例子
下面我们来创建一个基于UILabel的类别,增加一个自适应Label的方法~
- 我们先随意创建一个新类,用来存放类别代码,如命名为
Tools
。 - 在
Tools.h
中添加类别声明,如下:
@interface UILabel (KimiLabelCategroy)
//UILabel自动换行并调节字体尺寸以适应frame.size
- (void)kimiAutoAdjustsToContent:(NSString *)content;
@end
这里我特意添加前缀kimi
,来避免方法名称冲突。
- 接着,在
Tools.m
中实现方法:
@implementation UILabel (KimiLabelCategroy)
//UILabel自动换行并调节字体尺寸以适应frame.size
- (void)kimiAutoAdjustsToContent:(NSString *)content
{
if ([self isKindOfClass:[UILabel class]])
{
//UILabel换行, A value of 0 means no limit
self.numberOfLines = 0;
//allow the label to be autosized to fit a certain width by scaling the font size(s)
self.adjustsFontSizeToFitWidth = YES;
self.text = content;
}
else
{
//NSException
}
}
@end
该方法作用是根据content
内容实现UILabel
的自动换行和调整字体发小,使Label能够合理显示内容。
- 使用这个类别的新方法,
#import "Tools.h"
之后,对于一个现有的self.label
,调用此方法:
[self.label kimiAutoAdjustsToContent:@"THE QUICK BROWN FOX JUMPS OVER A LAZY DOG."];
运行可以看到效果,self.label
实现了自适应字体大小和换行:
总结
这次给大家简要讲述了一下类别的概念,并结合一个实用的例子演示了其作用,希望能对大家有所帮助。
感谢阅读,如果您觉得本文有趣,欢迎转载,请注明出处~