課程要點:app
試圖之間的繼承關係函數
昨天學習UIView的時候,瞭解到UIView裏面有如下幾個經常使用屬性學習
* backGroundColor:背景顏色字體
* alpha:透明度動畫
* subViews:子試圖集合spa
* hidden:是否隱藏操作系統
* tag:標籤值code
* superview:父試圖orm
咱們從這些基本屬性能夠發現,UIView裏面沒有屬性讓在文字顯示在試圖上面,也就是說UIView這個試圖,沒法知足咱的需求。此時UILabel就應運而生。在深刻學習UILabel以前,我們須要先研究一下UIView與UILabel的關係。對象
[self.window makeKeyAndVisible];
//首先按照我們建立控件的三步走建立一個UILbale,並把他在Window上。 UILabel *testLabel = [[UILabel alloc]init]; //按住command的同時鼠標點擊frame,此時我們能查看到關於frame屬性的API testLabel.frame = CGRectMake(100, 100, 120, 30); [self.window addSubview:testLabel];
出現這種狀況的主要緣由是UILable繼承於UIView,因爲UILabel跟UIView有不少通用的屬性,所以系統的UILabel類直接採用繼承的方式,避免了在UILabel中寫重複的屬性。
PS:在工程裏,咱們怎麼查看UILabel類是繼承於誰的。按住Command的同時點擊該類名。系統會自動定位到該類的.h文件中的interface部分,冒號部分是誰,就表示這個類繼承於誰。在作項目的過程當中學會怎麼查看API以及習慣於查看API
UILabel:他是一個標籤試圖,繼承UIView,不適合放太多的文本內容。
//首先建立一個UILabel對象 UILabel *testLabel = [[UILabel alloc]init]; //設置testLabel的位置和大小 testLabel.frame = CGRectMake(100, 100, 120, 100); //設置testLabel的背景顏色 testLabel.backgroundColor = [UIColor grayColor]; //給testLabel設置字符串 testLabel.text = @"全球領先的移動設備操做系統"; //給testLabel設置字體顏色 testLabel.textColor = [UIColor greenColor]; //給testLabel設置對其方式 testLabel.textAlignment = NSTextAlignmentCenter; //給testLabel設置字體大小 testLabel.font = [UIFont systemFontOfSize:17]; //給testLabel設置陰影顏色 // testLabel.shadowColor = [UIColor blackColor]; //給testLabel設置陰影偏移量 此時你能夠試試若是此時填的是(-5,-5)會是什麼效果 // testLabel.shadowOffset = CGSizeMake(10, 10); //給testLabel設置行數 1是一行顯示 2是兩行顯示 0是根據內容自適應函數 testLabel.numberOfLines = 2; //根據testLabel的寬高自動設置字體大小,從而讓內容所有顯示出來 testLabel.adjustsFontSizeToFitWidth = YES; [self.window addSubview:testLabel];
UIImageView:圖片試圖,繼承UIView,主要用來顯示圖片
怎麼在工程裏放圖片
//建立一個試圖對象 UIImageView *imgView = [[UIImageView alloc]init]; //若是圖片是PNG格式的,圖片名不須要加後綴,不然都要加後綴 imgView.image = [UIImage imageNamed:@「圖片名字"]; //在某個方向上讓圖片自適應,已達到最好看的效果。 imgeView.contentMode = UIViewContentModeScaleAspectFit; //讓圖片充滿整個frame imgeView.contentMode = UIViewContentModeScaleToFill; //取到圖片的相應位置,並放到屏幕上,會超出設置的圖片試圖Frame imgeView.contentMode = UIViewContentModeRight; //裁剪掉超出試圖frame的部分 imgeView.clipsToBounds = YES; //給試圖設置frame imgView.frame = CGRectMake(10, 10, 300, 400); //將試圖放在window上 [self.window addSubview:imgView];
用UIImageView設置一個幀動畫
/* * 建立幀動畫四要素 一、設置間隔時間 二、準備圖片素材 三、設置重複次數 四、開始動畫 五、結束動畫 */ //animationDuration設置動畫的時間間隔 imgView.animationDuration = 1; UIImage *img1 = [UIImage imageNamed:@「圖片名字」]; UIImage *img2 = [UIImage imageNamed:@"圖片名字"]; NSArray *array = @[img1,img2]; //給幀動畫準備素材 imgView.animationImages = array; //給動畫設置重複次數 imgView.animationRepeatCount = 0; //開始動畫 [imgView startAnimating]; //結束動畫 [imgView stopAnimating]; PS:UIImageView與UIImage的區別,UIImageView他就比如是一塊專門放圖片的位置,UIImage對象就是你要放置的圖片。
補充
#import "AppDelegate.h" /* * 宏定義格式: #define k常量名 @"" * 做用:宏定義就是用內容替換變量名,不只能夠替換字符串還能夠替換一句代碼 * 命名規則:k+駝峯命名法,例如:kCotent */ // // #define kContent @"我改過的內容" #define kLabelX label.frame.origin.x #define kScreenWidth [UIScreen mainScreen].bounds.size.height @interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { #pragma mark 補充 /* * 延遲方法performselector * CGRectGetHeight(<#CGRect rect#>) * [UIScreen mainScreen].bounds.origin * 宏定義 * 宏定義的使用技巧 */ [self.window makeKeyAndVisible]; //延遲多少秒後執行相應的方法,用selector選擇的方法必定要實現,不然會崩潰。 [self performSelector:@selector(start) withObject:nil afterDelay:5]; UILabel *label = [[UILabel alloc]init]; label.frame = CGRectMake(10, 20, 120, 49); label.backgroundColor = [UIColor redColor]; label.text = kContent; //此時用到宏定義,試着按住command的同時點擊kScreenWidth [self.window addSubview:label]; // 獲取到label的x值方式 // //第一種方式 // NSLog(@"label的x=%f",kLabelX); // //第二種方式(這種方式還能獲取到空間的最右邊中間的x值,試着用看UILabel是繼承哪一個類的方式來查看怎麼獲取到label高,寬) // NSLog(@"label的x=%f",CGRectGetMinX(label.frame)); //UIScreen指的就是屏幕,能幫組咱們獲取到各類屏幕的寬和高,再次我用宏定義來獲取 NSLog(@"屏幕的高=%f",kScreenWidth); return YES; } - (void)start{ }