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]