在以前的xcode版本中,練習的時候都會選擇空模板,並在AppDelegate.m中的didFinishLaunchingWithOptions中書寫代碼實例化控件對象(比如標簽),然後最終用[self.window addSubview:對象]的方法顯示出來。
但xcode最新的幾個版本中,已經沒有空模板選項,而是單MVC模板,所以需要在ViewController.m的viewDidLoad中書寫代碼,並用[self.view addSubview:label1]來顯示控件。
以下是label標簽的屬性:
- (void)viewDidLoad {
//初始化一個label1標簽對象,初始化有很多方法,最原始的就是init,此處用帶有frame的方法
UILabel *label1=[[UILabel alloc]initWithFrame:CGRectMake(30, 30, 300, 30)];
//設置內容
label1.text=@"我是 label 123 hello world 你好嗎?在家嗎?";
//設置文字顏色
label1.textColor=[UIColor whiteColor];
//設置標簽背景,clearColor是透明背景的意思
label1.backgroundColor=[UIColor redColor];
//設置文字對齊
label1.textAlignment=NSTextAlignmentCenter;
//設置字體,UIFont類有很多設置字體的方法,CMD+點擊可查看。
label1.font=[UIFont boldSystemFontOfSize:23];
//這個字體設置會覆蓋上面的設置,但字是否會傾斜加粗則需要看具體的字體
label1.font=[UIFont italicSystemFontOfSize:23];
//打印出所有系統字體,也是用得UIFont裡一個方法,可CMD+點擊查看
NSArray *arr1=[UIFont familyNames];
for (NSString *name in arr1) {
NSLog(@"%@",name);
}
//一般可用,同時修改字體和字號的方法
label1.font=[UIFont fontWithName:@"Georgia" size:40];
//設置陰影顏色
label1.shadowColor=[UIColor blackColor];
//設置陰影偏移值,需要CGSizeMake值,第一個表示左右偏移,>0向右;第二個表示上下偏移,>0向下
label1.shadowOffset=CGSizeMake(2, 5);
//設置高亮,如果設置為YES,則下面的高亮顏色會替換原先的textColor,而如果設置為No,或者高亮沒開啟,則高亮顏色設置無效,還是顯示textColor值
label1.highlighted=YES;
label1.highlightedTextColor=[UIColor redColor];
//根據標簽大小自動調整文字大小,如否不開啟,則多余的文字用...表示
label1.adjustsFontSizeToFitWidth=YES;
//文字與標簽的對齊,依次是文本頂端、中間、底端於標簽的中線對齊。可CMD+點擊以下任意一個值,發現這是一枚舉,默認值是UIBaselineAjustmentAlignBaselines
//以下方法僅當只有一行文本時有效
label1.baselineAdjustment=UIBaselineAdjustmentAlignBaselines;
label1.baselineAdjustment=UIBaselineAdjustmentAlignCenters;
label1.baselineAdjustment=UIBaselineAdjustmentNone;
UILabel *label2=[[UILabel alloc]initWithFrame:CGRectMake(30, 80, 300, 80)];
label2.text=@"hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world ";
//文字很多時,還是顯示1行,最後以...省略
//設置顯示的行數,0是不限制多少行,但由於標簽高度一定,如果顯示不下,最終仍以...省略
label2.numberOfLines=0;
//設置換行和最後截斷/省略
//NSLineBreakByWordWrapping-以單詞為單位換行,以單詞為單位截斷(即沒有...,顯示不了的直接截斷不顯示),默認,CMD+點擊發現也是一枚舉
//NSLineBreakByCharWrapping-以字符為單位換行,以字符為單位截斷
//NSLineBreakByClipping-以單詞為單位換行,以字符為單位截斷
//NSLineBreakByTruncatingHead-以單位為單位換行,以字符為單位截斷,但最後一行的前面是...省略,如果是一行,則就在一行的開頭有...
//NSLineBreakByTruncatingTail-以單位為單位換行,以字符為單位截斷,但最後一行的末尾是...省略,如果是一行,則就在一行的末尾有...
//NSLineBreakByTruncatingMiddle-以單位為單位換行,以字符為單位截斷,但最後一行的中間是...省略,如果是一行,則就在一行的中間有...
label2.lineBreakMode=NSLineBreakByTruncatingHead;
//根據內容調整標簽大小,三部曲
UILabel *label3=[[UILabel alloc]initWithFrame:CGRectZero];
label3.text=@"標簽3 標簽3 標簽3 標簽3 標簽3 標簽3 標簽3 標簽3 標簽3 標簽3 標簽3 標簽3 標簽3 標簽3 標簽3 標簽3 標簽3 標簽3";
//1、計算內容大小,即獲得高和寬,其實寬一般都給定了,只是計算高,而高寬二位對象一般是一個CGSize
CGSize size1=[label3.text sizeWithFont:label3.font constrainedToSize:CGSizeMake(300, 1000) lineBreakMode:NSLineBreakByCharWrapping];
//2、設置顯示行數,即不限制函數
label3.numberOfLines=0;
//3、利用size1設置標簽的寬和高
label3.frame=CGRectMake(30, 180, size1.width, size1.height);
//把上面初始化的標簽label1、2、3增加到當前的view裡,一並顯示出來
[self.view addSubview:label1];
[self.view addSubview:label2];
[self.view addSubview:label3];
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}