UILabel的属性设置可以有以下这些:
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 75, 40)]; //声明UIlbel并指定其位置和长宽
label.backgroundColor = [UIColor clearColor]; //设置label的背景色,这里设置为透明色。
label.font = [UIFont fontWithName:@"Helvetica-Bold" size:13]; //设置label的字体和字体大小。
label.transform = CGAffineTransformMakeRotation(0.1); //设置label的旋转角度
label.text = @“helloworld”; //设置label所显示的文本
label.textColor = [UIColor whiteColor]; //设置文本的颜色
label.shadowColor = [UIColorcolorWithWhite:0.1falpha:0.8f]; //设置文本的阴影色彩和透明度。
label.shadowOffset = CGSizeMake(2.0f, 2.0f); //设置阴影的倾斜角度。
label.textAlignment = UITextAlignmentCenter; //设置文本在label中显示的位置,这里为居中。
//换行技巧:如下换行可实现多行显示,但要求label有足够的宽度。
label.lineBreakMode = UILineBreakModeWordWrap; //指定换行模式
label.numberOfLines = 2; // 指定label的行数
首先 Label的属性可以设置如上这些了。
但是,这样灵活吗?
显然不灵活,因为不可能想要增加一个Label控件的时候,都要去alloc 一个控件之后设置各种文字颜色与字体明显表现得非常的繁琐。
我们应该如何封装Label来达到公用的效果。
解决方法:我们应该编写一个继承IOS各种控件的类,(比如 gobolLabel extends UILabel),在类中设置各种不同的字体与颜色。这样,我们就可以使用cocoa中继承Nscoding的IOS控件,重新他们的initWithFrame 和 initWithCoder 这两个方法。
为什么重写这两个方法?
当我们所写的程序里没用Nib文件(XIB)时,用代码控制视图内容,需要调用initWithFrame去初始化
- (id)initWithFrame:(CGRect)frame {
if ((self = [super initWithFrame:frame])) {
// Initialization code
}
return self;
}
用于视图加载nib文件,从nib中加载对象实例时,使用 initWithCoder初始化这些实例对象
- (id)initWithCoder:(NSCoder*)coder
{
if (self =[superinitWithcoder:coder]) {
// Initialization code
}
return self;
}
所以,我们只要充分利用好这两个类,如果有xib文件,我们只需要修改xib文件中的UI控件的继承类,既可以达到整个项目样式的一致性。如果没有xib文件,我们可以直接编写代码继承我们自定义的类即可。在类新建时会自动执行initWithFrame方法来初始化的。
比如:
NSString *font = @"Helvetica-Bold";
float font_size10 = 10.0;
float font_size11 = 11.0;
@implementation GlobalLabel
-(id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self)
{
[self setTextColor:[UIColor whiteColor]];
[self setShadowColor:[UIColor blackColor]];
[self setShadowOffset:CGSizeMake(1.0f, 0.0f)];
[self setFont:[UIFont fontWithName:font size:font_size11]];
}
return self;
}
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
[self setTextColor:[UIColor whiteColor]];
[self setShadowColor:[UIColor blackColor]];
[self setShadowOffset:CGSizeMake(1.0f, 0.0f)];
[self setFont:[UIFont fontWithName:font size:font_size11]];
}
return self;
}
而UIColor类如果是针对IOS游戏而言的话,往往是不够用的。我们应该定义自个项目中的颜色公用类。
颜色类公用类 GameColor (这个类方法应该是+的,应该是静态方法不应该是类方法,才能达到灵活封装)
GameColor 继承UIColor 类
并且给出一个switch 方法,先使用完系统中提供的UIColor ,剩下的使用UIColor colorWithxxx 来设定RGB颜色。
IOS 中colorWithxxx 总是使用的是十六进制。这个挺麻烦,那我们应该更加灵活的添加一个RGB与十六进制之间的转换函数就完美了。
小编这里也直接提供方法供大家使用。
#define UIColorFromRGB(rgbValue) [UIColor \
colorWithRed:((float)((rgbValue & 0xFF0000) >>16))/255.0 \
green:((float)((rgbValue & 0xFF00) >> 8))/255.0 \
blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]