UIView是所有UI控件的父類。UIView類的對象負(fù)責(zé)屏幕上一個矩形區(qū)域的顯示和行為動作。我們熟知的UIButton,UIImageview等等都繼承自UIView,因此,UIView所具備的屬性和方法,其子類也都同樣具備。
UIView類(視圖類)負(fù)責(zé)管理屏幕上的一塊矩形區(qū)域,包括這個區(qū)域內(nèi)的顯示樣式,比如背景顏色,大小,以及行為動作,例如監(jiān)測用戶點(diǎn)擊等觸碰事件。
視圖還可以用于管理一個或者多個子視圖。用戶看到的某個樣式,有可能是多個視圖疊加后的顯示效果。視圖的這種布局方式,也稱為視圖層次,一個父視圖可以包含任意多個子視圖。同時,父視圖的屬性有時也會影響到子視圖的樣式以及用戶交互行為。
總體來講,視圖類的主要作用有如下3個方面:
樣式顯示與動畫:負(fù)責(zé)自身矩形區(qū)域內(nèi)樣式的顯示,以及某些屬性(大小、位置、角度)變化時的動畫過渡效果;
布局與子視圖管理:管理子視圖
事件處理:接收觸摸事件。
在iOS開發(fā)中,UIView與UIViewController緊密協(xié)作,UIViewController負(fù)責(zé)UIView的加載與卸載。有關(guān)UIViewController的介紹,可以參考UIViewController相關(guān)教程:UIViewController介紹:1-創(chuàng)建控制器
2、UIKit族圖
通過UIKit的族圖可以看到,UIView繼承自UIResponder,因此UIView可以響應(yīng)用戶交互。另外,我們熟知的一些常用控件都繼承自UIView。需要特別說明的是,UIWindow也是繼承自UIView,窗口可以認(rèn)為是一個特殊的View。(有關(guān)UIWindow的知識,可以參見:UIWindow、UIView、UIViewController的關(guān)系)
3、最常使用的UIView屬性
在iOS開發(fā)中,有些UIView的屬性是非常常用的,在此給大家簡單列舉一些,后面課程中會做詳細(xì)講解。
/*UIView有關(guān)樣式的常用屬性*/
@property(nonatomic)CGRectframe;
@property(nonatomic)CGRectbounds;
@property(nonatomic)CGPointcenter;
@property(nonatomic)CGAffineTransformtransform;
@property(nullable,nonatomic,copy)UIColor*backgroundColor;
@property(nonatomic)CGFloatalpha;
@property(nonatomic,getter=isHidden)BOOL? ? ? ? ? ? ? hidden;
/*UIView管理子視圖的常用屬性和方法*/
@property(nullable,nonatomic,readonly)UIView*superview;
@property(nonatomic,readonly,copy)NSArray*subviews;
@property(nullable,nonatomic,readonly)UIWindow*window;
-(void)removeFromSuperview;
-(void)addSubview:(UIView*)view;
-(void)bringSubviewToFront:(UIView*)view;
/*UIView有關(guān)動畫的屬性和方法*/
+(void)animateWithDuration:(NSTimeInterval)duration animations:(void(^)(void))animations completion:(void(^__nullable)(BOOL finished))completion NS_AVAILABLE_IOS(4_0);
+(void)animateWithDuration:(NSTimeInterval)duration animations:(void(^)(void))animations NS_AVAILABLE_IOS(4_0);
/*UIView有關(guān)交互的常用屬性與方法*/
@property(nullable,nonatomic,copy)NSArray*gestureRecognizers;
-(void)addGestureRecognizer:(UIGestureRecognizer*)gestureRecognizer;
-(void)removeGestureRecognizer:(UIGestureRecognizer*)gestureRecognizer;