iOS中UIView的API詳解

1.png

從上圖我們可以看出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的hiddenYES,當(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ā)來支持我!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子镊讼,更是在濱河造成了極大的恐慌宽涌,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蝶棋,死亡現(xiàn)場離奇詭異卸亮,居然都是意外死亡,警方通過查閱死者的電腦和手機玩裙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進店門兼贸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人吃溅,你說我怎么就攤上這事寝受。” “怎么了罕偎?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵很澄,是天一觀的道長。 經(jīng)常有香客問我颜及,道長甩苛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任俏站,我火速辦了婚禮讯蒲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘肄扎。我一直安慰自己墨林,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布犯祠。 她就那樣靜靜地躺著旭等,像睡著了一般。 火紅的嫁衣襯著肌膚如雪衡载。 梳的紋絲不亂的頭發(fā)上搔耕,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天,我揣著相機與錄音痰娱,去河邊找鬼弃榨。 笑死,一個胖子當(dāng)著我的面吹牛梨睁,可吹牛的內(nèi)容都是我干的鲸睛。 我是一名探鬼主播,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼坡贺,長吁一口氣:“原來是場噩夢啊……” “哼官辈!你這毒婦竟也來了箱舞?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤钧萍,失蹤者是張志新(化名)和其女友劉穎褐缠,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體风瘦,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡队魏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了万搔。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胡桨。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖瞬雹,靈堂內(nèi)的尸體忽然破棺而出昧谊,到底是詐尸還是另有隱情,我是刑警寧澤酗捌,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布呢诬,位于F島的核電站,受9級特大地震影響胖缤,放射性物質(zhì)發(fā)生泄漏尚镰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一哪廓、第九天 我趴在偏房一處隱蔽的房頂上張望狗唉。 院中可真熱鬧,春花似錦涡真、人聲如沸分俯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缸剪。三九已至,卻和暖如春剧劝,著一層夾襖步出監(jiān)牢的瞬間橄登,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工讥此, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谣妻。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓萄喳,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蹋半。 傳聞我的和親對象是個殘疾皇子他巨,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內(nèi)容