[UIView]
UIView是所有視圖的父類腻菇,UIView的屬性和方法熙含,就是所有視圖的屬性和方法
1.UIView的基本屬性和方法
[1]frame (位置大胁鄣亍)
[2]backgroundColor(背景顏色)
[3]alpha(透明度烧栋,默認(rèn)值為1不透明,取值范圍:[0~1]0表示完全透明苇倡,1表示不透明)
[4]hidden(BOOL富纸,視圖是否隱藏[默認(rèn)值為NO])
[5]CALayer(視圖的繪圖)[layer.borderWidth邊框?qū)挾龋荩踠ayer.borderColor邊框的顏色][layer.cornerRadius設(shè)置圓角]
[6]userInteractionEnabled(BOOL,是否開(kāi)啟用戶交互旨椒,默認(rèn)為YES)
[7]opaque(設(shè)置是否不透明晓褪,默認(rèn)是YES)
[8]clipsToBounds(是否剪裁超出邊界的部分)
2.設(shè)置視圖尺寸位置的屬性
[1]frame(試圖相對(duì)窗口的坐標(biāo)和尺寸)
[2]bounds屬性(試圖相對(duì)于自己的坐標(biāo)和尺寸)
[3]center屬性(視圖的中心)
[4]transform屬性(視圖形變)
[注]frame、bounds综慎、center涣仿、transform 四個(gè)屬性相互關(guān)聯(lián),改變其中一個(gè)示惊,另外三個(gè)也會(huì)改變
只修改bounds的值好港,center值是不會(huì)改變的,frame會(huì)改變
修改frame會(huì)修改center的值涝涤,center會(huì)隨著frame的改變而改變
修改center值frame媚狰、bounds都會(huì)改變
3.父子視圖關(guān)系的屬性和方法
[1]window屬性 [視圖所在的窗口對(duì)象]
[2]superView屬性[當(dāng)前視圖的父視圖]每個(gè)視圖都有一個(gè)superView
[3]subView屬性 [視圖的直接子視圖]通過(guò)subviews:方法獲取的是self.view直接通過(guò)addSubVIew:方法添加的子視圖。不能獲取到子視圖上面的子視圖
[4]removeFromSuperview:方法阔拳,將視圖從父視圖中移除
[注]每一個(gè)子視圖只能有一個(gè)父視圖,當(dāng)我們將一個(gè)子視圖添加到另一個(gè)父視圖上面時(shí),他會(huì)脫離原來(lái)的父視圖糊肠。另外辨宠,我們指定子視圖的frame、bounds等屬性時(shí)货裹,它的值是相對(duì)于父視圖的相對(duì)值嗤形,而不是屏幕的絕對(duì)值,如果父視圖改變了位置弧圆,那么這些子視圖也會(huì)跟著改變赋兵。父視圖如果設(shè)置了隱藏或者透明效果,肯定也會(huì)影響到子視圖搔预。子視圖超出父視圖的部分霹期,是不能接受事件的。
[5]如果需要從父視圖中批量刪除子視圖拯田,可以使用下面的代碼:
NSArray *subViews = self.subViews;
if([subViews count] != 0) {
[subViews makeObjectPerformSelector:@selector(removeFromSuperview)];
}
4.關(guān)于父視圖的子視圖的層次關(guān)系
bringSunViewToFront:方法:將指定的子視圖移到層次的頂層
sendSubViewToBack:方法:將指定的子視圖放回到層次的底層
insertSubview:atIndex:方法:在指定的層次位置插入子視圖
- insertSubview:aboveSubview:方法:在指定的視圖層上面添加子視圖
- insertSubview:belowSubview:方法:在指定的視圖層下面添加子視圖[將某個(gè)視圖添加到某個(gè)視圖的下方历造,如果已經(jīng)添加到父視圖上,調(diào)用此方法船庇,只做視圖的交換位置吭产;如果未添加到父視圖,先將子視圖添加到父視圖再交換位置]
- exchangeSubviewAtIndex:withSubviewAtIndex:方法:交換兩個(gè)子視圖的層次[交換某兩個(gè)子視圖的位置鸭轮,交換時(shí)臣淤,必須要找到這兩個(gè)對(duì)應(yīng)位置的UIView,如果沒(méi)有找到將不做交換]
- isDescendantOfView:方法:判斷一個(gè)視圖是不是另一個(gè)視圖的子視圖
[注]相對(duì)于子視圖而言窃爷,父視圖始終在最下面
5荒典、層次與事件接收
[1]父視圖不能接收事件,則子視圖無(wú)法接收事件吞鸭。
[2]子視圖超出父視圖的部分寺董,不能接收事件。
[3]同一個(gè)父視圖下刻剥,最上面的視圖遮咖,首先遭遇事件,如果能夠響應(yīng)造虏,就不向下傳遞事件御吞。如果不能響應(yīng),事件向下傳遞漓藕。
6.UIView動(dòng)畫
[1]使用block語(yǔ)法設(shè)置動(dòng)畫的類方法
animateWithDuration:animations:類方法:用指定的持續(xù)時(shí)間完成通過(guò)Block指定的動(dòng)畫
[2]為視圖添加動(dòng)畫效果的類方法
beginAnimations:context:類方法:開(kāi)始一個(gè)動(dòng)畫
commitAnimations類方法:執(zhí)行動(dòng)畫
setAnimationStartDate:類方法:設(shè)置動(dòng)畫開(kāi)始時(shí)間
setAnimationDuration:類方法:設(shè)置動(dòng)畫持續(xù)時(shí)間
setAnimationDelay:類方法:設(shè)置延遲多少時(shí)間播放動(dòng)畫
setAnimationRepeatCount:類方法:設(shè)置動(dòng)畫重復(fù)播放次數(shù)
setAnimationRepeatAutoreverses:類方法:設(shè)置是否反向執(zhí)行動(dòng)畫
setAnimationTransition:forView:cache:類方法:設(shè)置動(dòng)畫的執(zhí)行效果以及作用于哪個(gè)視圖
說(shuō)明:UIView動(dòng)畫只能修改關(guān)于坐標(biāo)系統(tǒng)的屬性以及色彩和透明度
[1]縮放形變 ?CGAffineTransformMakeScale(-0.5, 1.5);[sx表示橫向縮放比例陶珠,sy表示縱向縮放比例]
[2]旋轉(zhuǎn)形變? CGAffineTransformMakeRotation(-M_PI_4);參數(shù)表示角度PI,正數(shù)為順時(shí)針?lè)较?/b>
[3]疊加形變?
// 第一個(gè)參數(shù):另外一個(gè)形變
CGAffineTransform angleTransform = CGAffineTransformMakeRotation(M_PI_4);
firstView.transform = CGAffineTransformScale(angleTransform, 0.5, 0.5);
// 根據(jù)現(xiàn)在視圖當(dāng)前的形變?cè)傩巫?/b>
firstView.transform = CGAffineTransformScale(firstView.transform, 0.5, 0.5);
7.拖沓靠模式
妥岱蹋靠模式,是控制父視圖改變大小時(shí),子視圖的變化方式
[1]- autoresizingMask屬性:當(dāng)父視圖改變大小時(shí)子視圖如何改變
[2]- autoresizesSubviews屬性:是否自動(dòng)調(diào)整子視圖大小
[3]- contentMode屬性:視圖大小改變時(shí)如何呈現(xiàn)其內(nèi)容
[4]- sizeToFit方法:調(diào)整視圖大小以適應(yīng)其子視圖
褪畲啵靠模式并非服務(wù)于視圖縮放渠啤,使用transform屬性scale視圖,根本是等比縮放添吗,子視圖也會(huì)等比縮放沥曹。停靠模式是服務(wù)于父視圖邊界修改后碟联,子視圖的重新布局妓美。
8.視圖相關(guān)回調(diào)方法
didAddSubview:方法:添加子視圖的回調(diào)方法
willRemoveSubview:方法:移除子視圖的回調(diào)方法
willMoveToSuperview:方法:視圖將要移到某個(gè)父視圖的回調(diào)方法
didMoveToSuperview:方法:視圖已經(jīng)移到某個(gè)父視圖的回調(diào)方法
willMoveToWindow:方法:視圖將要移到UIWindow對(duì)象的回調(diào)方法
didMoveToWindow:方法:視圖已經(jīng)移到UIWindow對(duì)象的回調(diào)方法