你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS開發UI篇-常用控件詳解(UIView)

iOS開發UI篇-常用控件詳解(UIView)

編輯:IOS開發綜合

一. 常用屬性


1.alpha(不透明度)

設置視圖的不透明度.默認為1.

view.alpha = 0;// 完全透明

view.alpha = 1;// 不透明

2.clipsToBounds默認是NO,當設置為yes時,超出當前視圖的尺寸的內容和子視圖不會顯示。

3.hidden 默認是NO,當設置為yes,視圖就看不見了。

4.userInteractionEnabled 默認為YES,如果設置為No,view就不能和用戶交互了。(即不能響應事件)

5.tag

默認為0,用來標記視圖的 6.exclusiveTouch默認為No,exclusiveTouch的意義在於:如果當前設置了exclusiveTouch的UIView是整個觸摸事件的第一響應者,那麼到你所有的手指離開屏幕前其他的UIView是無法接受到整個事件周期內所有的觸摸事件。 7.CGRect frame

1> 表示控件的位置和尺寸(以父控件的左上角為坐標原點(0, 0)) 2> 修改這個屬性,可以調整控件的位置和尺寸

8.CGPoint center

1> 表示控件的中點(以父控件的左上角為坐標原點) 2> 修改這個屬性,可以調整控件的位置

9.CGRect bounds

1> 表示控件的位置和尺寸(以自己的左上角位坐標原點,位置永遠是(0, 0)) 2> 修改這個屬性,只能調整控件的尺寸

10.CGAffineTransform transform

1> 表示控件的形變狀態(旋轉角度、縮放比例) 2> 創建CGAffineTransform的函數

CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)

創建一個x、y方向的縮放比例分別為sx、sy的形變值

CGAffineTransformMakeRotation(CGFloat angle)

創建一個旋轉角度為angle的形變值

CGAffineTransformScale(CGAffineTransform t, CGFloat sx, CGFloat sy)

在形變值t的基礎上,再進行縮放,x、y方向的縮放比例分別為sx、sy,然後返回一個新的形變值

CGAffineTransformRotate(CGAffineTransform t, CGFloat angle)

在形變值t的基礎上,再進行旋轉,旋轉角度為angle,然後返回一個新的形變值

11.superview返回當前視圖的父視圖。(只讀) 12.window返回當前視圖的窗口。(窗口)

獲取根視圖的superview和window時,需要注意,在viewdidload中是獲取不到的,viewdidload只是視圖加載完成,並沒有添加到窗口中,因此需要在viewDidAppear方法中才能獲取到。那時候視圖才被添加到窗口中。

- (void)viewDidLoad

{

[super viewDidLoad];

NSLog(@"%@",self.view.superview); // 沒有值

NSLog(@"%@", self.view.window); // 沒有值

}

- (void)viewDidAppear:(BOOL)animated

{

NSLog(@"%@",self.view.superview); // 有值

NSLog(@"%@", self.view.window); // 有值

}

13.autoresizesSubviews默認為YES,表示當父視圖尺寸改變時,子視圖也會隨著改變。 14.autoresizingMask默認為UIViewAutoresizingNone,不會自動伸縮。 15.contentMode設置內容模式。

UIViewContentModeScaleToFill 不按照原寬高比例(長和寬不等比例增長)以任意比例填充。這樣視圖不會有空白,且內容可以全部顯示。 UIViewContentModeAspectToFill 按照原長寬比例填充,不完全顯示全部內容。這樣內容可能溢出,但整個視圖不會留有空白。 UIViewContentModeAspectToFit 按照原長寬比例(長和寬等比例增長),完全顯示全部內容。這樣容易照成左右或者上下留有空白。 16.backgroundColor默認是nil。

二. 常用方法


1、addSubview:

添加一個子視圖到接收者並讓它在最上面顯示出來. 2、bringSubviewToFront:

把指定的子視圖移動到頂層.

-(void)bringSubviewToFront:(UIView *)view參數說明:view為需要移到頂層的視圖 3、convertPoint:fromView:

把一個點從一個坐標系轉換到接收者的坐標系 4、convertPoint:toView:

轉換一個點從接收者坐標系到給定的視圖坐標 5、convertRect:fromView:

轉換一個矩形從其他視圖坐標系到接收者坐標系。 如果參數視圖是nil,那麼這個方法將會基於窗口來轉換。否則視圖和接收者必須都屬於同一個UIWindow對象 6、convertRect:toView:

轉換接收者坐標系中的矩形到其他視圖。如果參數視圖是nil,這個方法將會基於窗口坐標系來轉換。否則視圖和接收者必須屬於同一個UIWindow對象 7、didAddSubview:

告訴視圖當子視圖已經添加,被子類重寫用來執行額外的命令當子視圖添加到接收者。這個方法被addSubview調用 didMoveToSuperview 通知接收者父視圖已經改變(nil是允許的) 默認不做任何事情;子類可以重寫這方法來作為特定的實現 8、didMoveToWindow

通知接收者它已經被添加到窗口中 - (void)didMoveToWindow

默認實現不做任何事情,子類可以重寫這個方法來做特殊的實現;

窗口的屬性有可能是nil當這個方法調用的時候,這表明接收者並不屬於當然任何一個窗口。這個只發生在接收者從它的父視圖上移除或者接收者添加到父視圖中而不是添加到window中。重寫這個方法可以用來選擇忽略一些他們不關心的對象 9、drawRect:

在接收者視圖中繪制矩形 - (void)drawRect:(CGRect)rect 參數 rect 一個定義的需要繪制的矩形

子類重寫這個方法如果他們確實要繪制他們自定義的視圖。如果子類是其他視圖的容器那麼它不需要重寫這個方法。默認的實現不做任何事情。如果你自定義的視圖是一個UIView子類,你不需要去調用它的父類實現。注意如果它的父類實現繪制並且不透明屬性為YES那麼每一個子類都需要填充矩形。 當這個方法被調用,接收者可以假定他的幀在坐標上已經轉換,邊界矩形已經應用;所有他要做的就是繪制自定義的方法。

使用UIGraphicsGetCurrentContext方法去獲取當前圖形內容用來繪制,坐標原點在左上角。

不要保留圖片內容當他可以被drawRect:這個方法調用。

exchangeSubviewAtIndex:withSubviewAtIndex: 交換接收者的子視圖和給定的索引視圖 - (void)exchangeSubviewAtIndex:(NSInteger)index1 withSubviewAtIndex:(NSInteger)index2 參數 index1 一個需要取代索引2的子視圖 index2 一個需要取代索引1的子視圖 10、hitTest:withEvent:

返回接收者視圖層次中最遠的派生(包括它本身)的特定的點。

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event 參數 point 接收者坐標系中的點 event 觸發這個方法的事件或者是如果這個方法被預調用就返回nil 返回值 一個視圖對象最遠的派生點。如果這個點位於接收者之外就返回nil.

這個方法貫穿視圖的層次發送pointInside:withEvent: 消息到每一個子視圖用來決定那個子視圖需要接收觸摸事件。如果pointInside:withEvent: 返回YES,那麼視圖的層次全部貫穿;否則視圖層次的分支是被否定的。

你不太需要調用這個方法,但是你需要重寫它用來隱藏子視圖的觸摸事件。 如果視圖是隱藏的,禁止用戶交互的或者透明值小於01那麼這個方法不可用 11、initWithFrame:

初始化並返回一個新的擁有特定幀矩形的視圖對象

- (id)initWithFrame:(CGRect)aRect參數 aRect 一個幀矩形用來創建視圖對象。原始的幀在它的父視圖的坐標系中。設置這個屬性用來改變中心和邊界屬性。 返回值 一個初始化的視圖對象,如果沒有被創建那就返回nil 討論 一個新的視圖對象必須添加到視圖鏈中才能使用。這個方法為UIView類指出初始化對象。 12、insertSubview:aboveSubview:

在視圖層次頂層插入一個視圖

- (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview 參數 view 一個插入被用來放在頂層的視圖。它將會從父視圖中移除如果它不是相鄰視圖 siblingSubview 一個相鄰視圖用來放在插入視圖的後面 13、insertSubview:atIndex:

插入視圖到指定的索引

- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index 參數 view 插入的視圖,這個值不能是nil index 子視圖索引從0開始並且不能大於子視圖的數量 14、insertSubview:belowSubview:

插入視圖到顯示鏈的底層

- (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview參數 view 一個需要插入到其他視圖底部的視圖。它將從它的父視圖移除如果它不與相鄰視圖的相鄰 siblingSubview 一個相鄰視圖將會在插入的視圖之上 15、isDescendantOfView:

返回一個布爾值指出接收者是否是給定視圖的子視圖或者指向那個視圖

- (BOOL)isDescendantOfView:(UIView *)view 參數 view 一個視圖用來測試子視圖在視圖層次中的關系 返回值 如果接收者是視圖的子視圖就返回YES,或者視圖就是接收者;否則就是NO 16、layoutIfNeeded

排列子視圖如果需要的話

- (void)layoutIfNeeded

使用這個方法來關注子視圖的排列在繪制前 17、layoutSubviews

排列子視圖

- (void)layoutSubviews

當layoutIfNeeded被調用是子類用來重寫這個方法來排列子視圖。默認實現這個方法不做任何事情。 18、pointInside:withEvent:

返回一個布爾值指出接收者是否包含特定的點

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event參數 point 一個在接收者坐標系內的點 event 這個方法的目標事件或者如果這個方法被預調用返回nil 返回值 如果點在接收者邊界內返回YES,否則返回NO 19、removeFromSuperview

把接收者從它的父視圖或者窗口移除,並在響應鏈中移除。

- (void)removeFromSuperview

接收者同時釋放;如果你計劃重用它,要確定在發送消息前保持它並在添加到其他UIView對象作為子視圖後移除。 不要在顯示的時候調用 20、sendSubviewToBack:

移動指定的子視圖到它相鄰視圖的後面

- (void)sendSubviewToBack:(UIView *)view 參數 view 一個子視圖用來移動到它後面去 21、setNeedsDisplay

控制接收者的邊界矩形被標記為需要顯示

-(void)setNeedsDisplay

默認情況下,視圖幾何圖形的改變自動重繪而不需要調用drawRect:方法。因此,你需要去請求視圖重繪當視圖的數據或者狀態改變的時候。從這個意義上來說,向視圖發送setNeedsDisplay消息。任何UIView對象標記為需要顯示後將會在應用程序循環中自動重新繪制。 22、setNeedsDisplayInRect:

標記接收者中的特定的矩形區域為需要顯示,或者添加接收者現有的其他無效區域

- (void)setNeedsDisplayInRect:(CGRect)invalidRect 參數 invalidRect 標記接收者的矩形區域為無效的;他需要在接收者坐標系中定義。

默認情況下,視圖幾何圖形的改變自動重繪而不需要調用drawRect:方法。因此,你需要去請求視圖重繪當視圖的數據或者狀態改變的時候。使用這個方法或者用setNeedsDisplay方法來標記視圖需要顯示的地方。 23、setNeedsLayout

設置當子視圖顯示的時候需要重新排列

- (void)setNeedsLayout

如果你調用這個方法在下一個顯示方法之間,那麼layoutIfNeeded排列子視圖;否則將不會做任何事情 24、sizeThatFits:

計算並返回一個最好的適應接收者子視圖的大小

- (CGSize)sizeThatFits:(CGSize)size 參數 size 接收者首選的尺寸 返回值 一個新的大小用來適應接收者子視圖

默認的實現返回大小參數

子類重寫這個方法用來返回特定視圖的大小。舉個粒子,UISwitch返回一個修正過的大小,UIImageView返回圖片的大小 這個方法並沒有改變接收者的大小 25、sizeToFit

調整大小並移動接收者視圖大小所以他包含了他的子視圖

- (void)sizeToFit討論 這個方法使用sizeThatFits: 方法來決定大小。

子類需要重寫sizeThatFits:用來計算正確的尺寸大小。

默認的實現不做任何事情。 26、viewWithTag:

返回視圖的特定的標簽

- (UIView *)viewWithTag:(NSInteger)tag 參數 tag 一個用來在視圖中搜索的標簽 返回值 視圖在接收者層次中符合的標簽,接收者也包含在搜索中。 27、willMoveToSuperview:

通知接收者他的父視圖將會改變到特定的父視圖(也有可能是nil)

- (void)willMoveToSuperview:(UIView *)newSuperview 參數 newSuperview 新的視圖對象將會是接收者新的父視圖 討論 子類可以重寫這個方法來做一些特定的行為 28、willMoveToWindow:

通知接收者它已經被添加到特定的窗口對戲那個的視圖層次中(也有可能是nil)

- (void)willMoveToWindow:(UIWindow *)newWindow 參數 newWindow 一個窗口對象將會成為接收者新的視圖層次的根視圖

子類可以重寫這個方法來提供一些特定的必要實現 29、willRemoveSubview:

由子類重寫用來在子視圖從接收者視圖中移除前執行一些特定的方法。

- (void)willRemoveSubview:(UIView *)subview 參數 subview 子視圖將會被移除.

這個方法被調用當子視圖接收到removeFromSuperview消息或者子視圖從接收者視圖層次中移除因為它要被添加到其他視圖了

三. 其他(繪圖相關方法)

1、drawAtPoint:: mode = kCGBlendModeNormal, alpha = 1.0。在 Point這個點繪圖。

- (void)drawAtPoint: (CGPoint)point;

2、drawAtPoint:blendMode: alpha::在 Point這個點,以某種模式繪圖。

- (void)drawAtPoint: (CGPoint)point blendMode: (CGBlendMode)blendMode alpha: (CGFloat)alpha;

3、drawInRect::mode = kCGBlendModeNormal, alpha = 1.0。在某個具體位置進行繪圖。

- (void)drawInRect: (CGRect)rect;

4、drawInRect: blendMode:alpha::在某個具體位置,以某種模式,某種透明度進行繪圖。

- (void)drawInRect: (CGRect)rect blendMode: (CGBlendMode)blendMode alpha: (CGFloat)alpha;

5、drawAsPatternInRect::draws the image as a CGPattern.在某個具體位置平鋪圖像。

- (void)drawAsPatternInRect: (CGRect)rect;

6、resizableImageWithCapInsets::創建並返回一個指定邊距的圖像對象。

- (UIImage *)resizableImageWithCapInsets: (UIEdgeInsets)capInsets;

7、resizableImageWithCapInsets:resizingMode::創建並返回一個指定邊距和伸縮模式的圖片對象。

- (UIImage *)resizableImageWithCapInsets: (UIEdgeInsets)capInsets resizingMode: (UIImageResizingMode)resizingMode NS_AVAILABLE_IOS(6_0);

8、imageWithAlignmentRectInsets::返回一個指定了對齊方式的圖片,一個新的圖片對象。

-(UIImage*)imageWithAlignmentRectInsets: (UIEdgeInsets)alignmentInsets NS_AVAILABLE_IOS(6_0);

9、imageWithRenderingMode::根據渲染模式,創建一並返回一個新的圖片對象

-(UIImage*)imageWithRenderingMode: (UIImageRenderingMode)renderingMode NS_AVAILABLE_IOS(7_0);

10、imageFlippedForRightToLeftLayoutDirection::返回當前圖片,准備水平旋轉時,它會從右向左布局。

-(UIImage*)imageFlippedForRightToLeftLayoutDirection NS_AVAILABLE_IOS(9_0);

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved