[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)方法