從上圖我們可以看出UIView繼承于UIResponder
慣例,我們在看一個類的時候首先要看的是他的初始化方法:當(dāng)然他的父類的初始化方法當(dāng)然也是可以使用的,在這里我們不過多的延展,直接說我們UIView中的屬性和方法.
//初始化方法給定一個frame就可以了
- (instancetype)initWithFrame:(CGRect)aRect;
//背景色設(shè)置
@property(nonatomic, copy)?UIColor?*backgroundColor;
//view的顯隱性設(shè)置,默認為NO(其實就是將view的alpha值改為0.0),如果設(shè)置當(dāng)前的view的hidden為YES,當(dāng)前視圖以及其subviews都會隱藏,當(dāng)前的view會從響應(yīng)者鏈中移除,而響應(yīng)者鏈中的下一個會成為第一響應(yīng)者.
@property(nonatomic, getter=isHidden) BOOL hidden;
//透明度設(shè)置,默認為1.0(該屬性的取值范圍為0.0~1.0,表示從完全透明到完全不透明)
@property(nonatomic)?CGFloat?alpha;
//不透明度設(shè)置,默認為YES,但是UIButton等子類的默認值都是NO,這個屬性我們在這里要多嘮叨一下,雖然這個屬性不常用,但是也是很重要的.可以參考我的下一篇文章文章地址(UIView的alpha酪夷、hidden和opaque屬性之間的關(guān)系和區(qū)別)
@property(nonatomic, getter=isOpaque) BOOL opaque;
//當(dāng)前view的渲染色,iOS7以后的屬性,在導(dǎo)航欄等控件上會使用到
@property(nonatomic, strong)?UIColor?*tintColor;
//渲染色調(diào)整模式是個枚舉
@property(nonatomic) UIViewTintAdjustmentMode tintAdjustmentMode;
//切除超出父視圖范圍的部分,默認為NO
@property(nonatomic) BOOL clipsToBounds;
//決定在視圖重畫之前是否先清理視圖以前的內(nèi)容听怕,默認值為YES,如果你把這個屬性設(shè)為NO,那么你要保證能在 drawRect:方法中正確的繪畫诞丽。如果你的代碼已經(jīng)做了大量優(yōu)化祠乃,那么設(shè)為NO可以提高性能币叹,尤其是在滾動時可能只需要重新繪畫視圖的一部分
@property(nonatomic) BOOL clearsContextBeforeDrawing;
//maskView(詳解maskView)是iOS8以上才有的方法,如果考慮版本的兼容問題,可以考慮用maskLayer替換,maskView(maskLayer)可類比多張png圖片的疊加遮罩,原理類似視圖遮罩屬性,你可以用一張透明的有漸變效果的圖片來的imageView設(shè)置為另一個imageView的maskView(這篇文章講解的很詳細)
@property(nonatomic, strong) UIView *maskView;
//獲取當(dāng)前視圖的layer類
+ (Class)layerClass;
//屬于CALayer類,是一個很重要的屬性,用于視圖渲染的核心動畫層,CALayer(層)是屏幕上的一個矩形區(qū)域,在每一個UIView中都包含一個根CALayer,在UIView上的所有視覺效果都是在這個Layer上進行的,對于這個類的詳解會在以后跟進.
@property(nonatomic, readonly, strong)?CALayer?*layer;
//用戶交互是否打開
@property(nonatomic, getter=isUserInteractionEnabled ) BOOL userInteractionEnabled;
//是否允許多指觸摸
@property(nonatomic, getter=isMultipleTouchEnabled) BOOL multipleTouchEnabled;
//可以達到同一界面上多個控件接受事件時的排他性,從而避免一些問題矢洲。也就是說避免在一個界面上同時點擊多個button绣檬。
@property(nonatomic, getter=isExclusiveTouch) BOOL exclusiveTouch;
//控件相對于父視圖的位置和大小
@property(nonatomic)?CGRect?frame;
//控件相對于自身的位置和大小
@property(nonatomic)?CGRect?bounds;
//控件的中心點
@property(nonatomic)?CGPoint?center;
//設(shè)置空間的變化也可以用它來設(shè)置動畫
@property(nonatomic)?CGAffineTransform?transform;
//當(dāng)前view的父視圖(只讀屬性)
@property(nonatomic, readonly) UIView *superview;
//當(dāng)前view(控件)的子視圖們
@property(nonatomic, readonly, copy)?NSArray<__kindofUIView*> *subviews;
//當(dāng)前視圖的window,一個app只有一個window
@property(nonatomic, readonly)?UIWindow?*window;
//添加view為當(dāng)前view的子視圖
- (void)addSubview:(UIView *)view;
//將view提到最前面
- (void)bringSubviewToFront:(UIView *)view;
//將view放置到最后一層
- (void)sendSubviewToBack:(UIView *)view;
//當(dāng)前視圖從其父視圖上移除
- (void)removeFromSuperview;
//插入一個視圖在index位置
- (void)insertSubview:(UIView *)view?atIndex:(NSInteger)index;
//將view放置到siblingSubview的上面
- (void)insertSubview:(UIView *)view?aboveSubview:(UIView *)siblingSubview;
//將view放置到siblingSubview下面
- (void)insertSubview:(UIView *)view?belowSubview:(UIView *)siblingSubview;
//將index1位置的view和index2位置上的view圖層互換
- (void)exchangeSubviewAtIndex:(NSInteger)index1?withSubviewAtIndex:(NSInteger)index2;
//是否是view的子視圖
- (BOOL)isDescendantOfView:(UIView *)view;
//自動調(diào)整view的邊界的位置(默認是UIViewAutoresizingNone)
@property(nonatomic) UIViewAutoresizing autoresizingMask;
//如果視圖的autoresizesSubviews屬性聲明被設(shè)置為YES足陨,則其子視圖會根據(jù)autoresizingMask屬性的值自動進行尺寸調(diào)整.eg:self.autoresizingMask = UIViewAutoresizingFlexibleWidth;這個常量如果被設(shè)置,視圖的寬度將和父視圖的寬度一起成比例變化娇未。否則墨缘,視圖的寬度將保持不變.
@property(nonatomic) BOOL autoresizesSubviews;
//視圖的填充類型(枚舉,可以用imageView試一下填充效果)
@property(nonatomic) UIViewContentMode contentMode;
//視圖的拉伸(水平拉伸和垂直拉伸)
@property(nonatomic)?CGRect?contentStretch;
//view根據(jù)size來適應(yīng)控件的size
- (CGSize)sizeThatFits:(CGSize)size;
//eg:label的寬高根據(jù)label上的text來適應(yīng)寬高
- (void)sizeToFit;
如果你感覺對你有幫助,請留言或者關(guān)注我的微信公眾號西河老伯iOS開發(fā)來支持我!