UIView無所不談

[UIView]

UIView是所有視圖的父類,UIView的屬性和方法,就是所有視圖的屬性和方法

1.UIView的基本屬性和方法

[1]frame (位置大小)

[2]backgroundColor(背景顏色)

[3]alpha(透明度,默認值為1不透明,取值范圍:[0~1]0表示完全透明,1表示不透明)

[4]hidden(BOOL,視圖是否隱藏[默認值為NO])

[5]CALayer(視圖的繪圖)[layer.borderWidth邊框?qū)挾龋荩踠ayer.borderColor邊框的顏色][layer.cornerRadius設置圓角]

[6]userInteractionEnabled(BOOL,是否開啟用戶交互,默認為YES)

[7]opaque(設置是否不透明,默認是YES)

[8]clipsToBounds(是否剪裁超出邊界的部分)

2.設置視圖尺寸位置的屬性

[1]frame(試圖相對窗口的坐標和尺寸)

[2]bounds屬性(試圖相對于自己的坐標和尺寸)

[3]center屬性(視圖的中心)

[4]transform屬性(視圖形變)

[注]frame、bounds、center、transform 四個屬性相互關聯(lián),改變其中一個,另外三個也會改變

只修改bounds的值,center值是不會改變的,frame會改變

修改frame會修改center的值,center會隨著frame的改變而改變

修改center值frame、bounds都會改變

3.父子視圖關系的屬性和方法

[1]window屬性 [視圖所在的窗口對象]

[2]superView屬性[當前視圖的父視圖]每個視圖都有一個superView

[3]subView屬性 [視圖的直接子視圖]通過subviews:方法獲取的是self.view直接通過addSubVIew:方法添加的子視圖。不能獲取到子視圖上面的子視圖

[4]removeFromSuperview:方法,將視圖從父視圖中移除

[注]每一個子視圖只能有一個父視圖,當我們將一個子視圖添加到另一個父視圖上面時,他會脫離原來的父視圖。另外,我們指定子視圖的frame、bounds等屬性時,它的值是相對于父視圖的相對值,而不是屏幕的絕對值,如果父視圖改變了位置,那么這些子視圖也會跟著改變。父視圖如果設置了隱藏或者透明效果,肯定也會影響到子視圖。子視圖超出父視圖的部分,是不能接受事件的。

[5]如果需要從父視圖中批量刪除子視圖,可以使用下面的代碼:

NSArray *subViews = self.subViews;

if([subViews count] != 0) {

[subViews makeObjectPerformSelector:@selector(removeFromSuperview)];

}

4.關于父視圖的子視圖的層次關系

bringSunViewToFront:方法:將指定的子視圖移到層次的頂層

sendSubViewToBack:方法:將指定的子視圖放回到層次的底層

insertSubview:atIndex:方法:在指定的層次位置插入子視圖

- insertSubview:aboveSubview:方法:在指定的視圖層上面添加子視圖

- insertSubview:belowSubview:方法:在指定的視圖層下面添加子視圖[將某個視圖添加到某個視圖的下方,如果已經(jīng)添加到父視圖上,調(diào)用此方法,只做視圖的交換位置;如果未添加到父視圖,先將子視圖添加到父視圖再交換位置]

- exchangeSubviewAtIndex:withSubviewAtIndex:方法:交換兩個子視圖的層次[交換某兩個子視圖的位置,交換時,必須要找到這兩個對應位置的UIView,如果沒有找到將不做交換]

- isDescendantOfView:方法:判斷一個視圖是不是另一個視圖的子視圖

[注]相對于子視圖而言,父視圖始終在最下面

5、層次與事件接收

[1]父視圖不能接收事件,則子視圖無法接收事件。

[2]子視圖超出父視圖的部分,不能接收事件。

[3]同一個父視圖下,最上面的視圖,首先遭遇事件,如果能夠響應,就不向下傳遞事件。如果不能響應,事件向下傳遞。

6.UIView動畫

[1]使用block語法設置動畫的類方法

animateWithDuration:animations:類方法:用指定的持續(xù)時間完成通過Block指定的動畫

[2]為視圖添加動畫效果的類方法

beginAnimations:context:類方法:開始一個動畫

commitAnimations類方法:執(zhí)行動畫

setAnimationStartDate:類方法:設置動畫開始時間

setAnimationDuration:類方法:設置動畫持續(xù)時間

setAnimationDelay:類方法:設置延遲多少時間播放動畫

setAnimationRepeatCount:類方法:設置動畫重復播放次數(shù)

setAnimationRepeatAutoreverses:類方法:設置是否反向執(zhí)行動畫

setAnimationTransition:forView:cache:類方法:設置動畫的執(zhí)行效果以及作用于哪個視圖

說明:UIView動畫只能修改關于坐標系統(tǒng)的屬性以及色彩和透明度

[1]縮放形變 ?CGAffineTransformMakeScale(-0.5, 1.5);[sx表示橫向縮放比例,sy表示縱向縮放比例]

[2]旋轉(zhuǎn)形變? CGAffineTransformMakeRotation(-M_PI_4);參數(shù)表示角度PI,正數(shù)為順時針方向

[3]疊加形變?

// 第一個參數(shù):另外一個形變

CGAffineTransform angleTransform = CGAffineTransformMakeRotation(M_PI_4);

firstView.transform = CGAffineTransformScale(angleTransform, 0.5, 0.5);

// 根據(jù)現(xiàn)在視圖當前的形變再形變

firstView.transform = CGAffineTransformScale(firstView.transform, 0.5, 0.5);

7.??磕J?/b>

停靠模式,是控制父視圖改變大小時,子視圖的變化方式

[1]- autoresizingMask屬性:當父視圖改變大小時子視圖如何改變

[2]- autoresizesSubviews屬性:是否自動調(diào)整子視圖大小

[3]- contentMode屬性:視圖大小改變時如何呈現(xiàn)其內(nèi)容

[4]- sizeToFit方法:調(diào)整視圖大小以適應其子視圖

??磕J讲⒎欠沼谝晥D縮放,使用transform屬性scale視圖,根本是等比縮放,子視圖也會等比縮放。??磕J绞欠沼诟敢晥D邊界修改后,子視圖的重新布局。

8.視圖相關回調(diào)方法

didAddSubview:方法:添加子視圖的回調(diào)方法

willRemoveSubview:方法:移除子視圖的回調(diào)方法

willMoveToSuperview:方法:視圖將要移到某個父視圖的回調(diào)方法

didMoveToSuperview:方法:視圖已經(jīng)移到某個父視圖的回調(diào)方法

willMoveToWindow:方法:視圖將要移到UIWindow對象的回調(diào)方法

didMoveToWindow:方法:視圖已經(jīng)移到UIWindow對象的回調(diào)方法

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 在iOS中隨處都可以看到絢麗的動畫效果,實現(xiàn)這些動畫的過程并不復雜,今天將帶大家一窺ios動畫全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,699評論 6 30
  • 在iOS中隨處都可以看到絢麗的動畫效果,實現(xiàn)這些動畫的過程并不復雜,今天將帶大家一窺iOS動畫全貌。在這里你可以看...
    F麥子閱讀 5,275評論 5 13
  • Core Animation基礎 Core Animation 利用了硬件加速和架構(gòu)上的優(yōu)化來實現(xiàn)快速渲染和實時動...
    獨木舟的木閱讀 1,717評論 0 3
  • 初識iOS APP開發(fā)#### 在iOS APP開發(fā)中, main函數(shù)仍是程序的入口和出口, 但main函數(shù)不需要...
    DeanYan閱讀 6,626評論 0 3
  • 剛下好了簡書。從知乎看到的這個軟件的推薦,應該很好用吧,最近看的書比較多,對閱讀和寫作有了點興趣。 不知道這個...
    沙拉木閱讀 192評論 0 0

友情鏈接更多精彩內(nèi)容