UIView經常使用方法彙總

在現實編程中,咱們常常碰到各類的UI問題,今天我帶你們一塊兒學習,如何操做UIView的各類方法,好了直接上代碼。編程

1.addSubViewide

- (void)viewDidLoad {
    [super viewDidLoad];


   // 1.addSubView
    
    UIView*testView = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
    
    testView.backgroundColor = [UIColor redColor];
    
    [self.view addSubview:testView];
    
/*詳解**  addSubview:
      添加一個子視圖到接收者並讓它在最上面顯示出來。
       - (void)addSubview:(UIView *)view 討論 這方法一樣設置了接收者爲下一個視圖響應對象。接收者保留視圖。
       若是你使用 removeFromSuperview方法用來把視圖移除他的顯示列表,那麼視圖將會被釋放。
       若是你想 要在視圖移除顯示列表後保留並使用這個視圖(若是,舉個例子,你想要交換一些視圖的位 置。),
       你不準保留那個視圖在他調用removeFromSuperview前。
*/
    
    
    
    
    
    


}

圖片描述

2.bringSubviewToFront學習

//2.bringSubviewToFront
    UIView *bringView = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 50, 50)];
    bringView .backgroundColor = [UIColor grayColor];
    [self.view addSubview:bringView];
    [self.view bringSubviewToFront:testView];
    
    /**詳解 bringSubviewToFront
     把指定的子視圖移動到頂層 
     - (void)bringSubviewToFront:(UIView *)view 參數 view 須要移到頂 層的視圖
    
    */

圖片描述

3.convertPoint:fromView:測試

//3.convertPoint:fromView:
  
    CGPoint viewPoint = [self.view convertPoint:testView.frame.origin fromView:testView];
    
    /**詳解  
     把一個點從一個座標系轉換到接收者的座標系 - (CGPoint)convertPoint:(CGPoint)point fromView:(UIView *)view 參數 point 一個視圖中座標系上的點 view 一個視圖包含了點和他自 身座標系。若是是圖是nil,那麼這個方法將嘗試轉換基於窗口的座標系。不然視圖和那個接收 者必須屬於同一個UIWindow對象。 返回值 一個轉換到接收者座標系的點
     */

4.convertPoint:toView:spa

//4.convertPoint:toView:
    
    CGPoint viewPoint2 = [self.view convertPoint:testView.frame.origin toView:bringView];
   /**詳解 轉換一個點從接收者座標系到給定的視圖座標系 - (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view 參數 point 一個在調用者座標系中的點 view 一個包含了須要被轉換的點 的視圖。若是視圖是nil,那麼這個方法將會轉換成基於窗口的座標。不然視圖和接收者都要屬 於同一個UIWindow對象。 返回值 基於視圖的座標系轉換過的點
    */

5.convertRect:fromView:code

//5.convertRect:fromView:
    
    CGRect rc = [self.view convertRect:cell.btn.frame fromView:cell];
    
    /**詳解
     轉換一個矩形從其餘視圖座標系到接收者座標系。 - (CGRect)convertRect:(CGRect)rect fromView:(UIView *)view 參數 rect 一個在視圖座標系中的矩形 view 一個視圖內部有矩形在他 的座標系中。若是視圖是nil,那麼這個方法將會基於窗口來轉換。不然視圖和接收者必須都屬 於同一個UIWindow對象 返回值 The converted rectangle 轉換過的矩形
     */

6.converRect:toView:對象

//6.convertRect:toView:
    CGRect rc = [cell convertRect:cell.btn.frame toView:self.view];
    /**詳解
     轉換接收者座標系中的矩形到其餘視圖 - (CGRect)convertRect:(CGRect)rect toView:(UIView *)view 參數 rect 一個在接收者座標系中的矩形 view 要轉換過去的目標視圖對象。若是這個是 視圖是nil,這個方法將會基於窗口座標系來轉換。否者視圖和接收者必須屬於同一個 UIwindow對象 返回值 一個轉換過的矩形
     */

7.didAddSubview:索引

-(void)didAddSubview:(UIView *)subview
{
    
    
    
    /**詳解
     告訴視圖當子視圖已經添加 - (void)didAddSubview:(UIView *)subview 參數 subview 被添加作 子視圖的視圖對象 討論 被子類重寫用來執行額外的命令當子視圖添加到接收者。這個方法被
     addSubview調用
     */

    NSLog(@"didAddSubview");
    
    
}
  1. didMoveToSuperview事件

-(void)didMoveToSuperview
{
   
    /*詳解
     didMoveToSuperview
     通知接收者父視圖已經改變(nil是容許的) - (void)didMoveToSuperview 討論 默認不作任何 事情;子類能夠重寫這方法來做爲特定的實現
     */
    
    NSLog(@"didMoveToSuperview");
}
9. didMoveToWindow
-(void)didMoveToWindow
{
    /*詳解
     didMoveToWindow
     通知接收者它一斤給添加到窗口中 - (void)didMoveToWindow 討論 默認實現不作任何事情; 子類能夠重寫這個方法來作特殊的實現 窗口的屬性有多是nil當這個方法調用的時候,這代表 接收者並不屬於固然任何一個窗口。這個只發生在接收者從它的父視圖上移除或者接收者添加 到父視圖中而不是添加到window中。重寫這個方法能夠用來選擇忽略一些他們不關心的對象
     */
    NSLog(@"didMoveToWindow");
}
10. drawRect
- (void)drawRect:(CGRect)rect {
    /*詳解
     在接收者視圖中繪製矩形 - (void)drawRect:(CGRect)rect 參數 rect 一個定義的須要繪製的矩形 討論 子類重寫這個方法若是他們確實要繪製他們自定義的視圖。若是子類是其餘視圖的容器那 麼它不須要重寫這個方法。默認的實現不作任何事情。若是你自定義的視圖是一個UIView子 類,你不須要去調用它的父類實現。注意若是它的父類實現繪製而且不透明屬性爲YES那麼每 一個子類都須要填充矩形。 當這個方法被調用,接收者能夠假定他的幀在座標上已經轉換,邊 界矩形已經應用;全部他要作的就是繪製自定義的方法。使用UIGraphicsGetCurrentContext 方法去獲取當前圖形內容用來繪製,座標原點在左上角。不要保留圖片內容當他能夠被 drawRect:這個方法調用。
     
     
    */ }

11.exchangeSubviewAtIndex:withSubviewAtIndex:圖片

//    11.exchangeSubviewAtIndex
    /**詳解
     exchangeSubviewAtIndex:withSubviewAtIndex:
    交換接收者的子視圖和給定的索引視圖 - (void)exchangeSubviewAtIndex:(NSInteger)index1 withSubviewAtIndex:(NSInteger)index2 參數 index1 一個須要取代索引2的子視圖 index2 一個 須要取代索引1的子視圖
     */

12.hitTest:withEvent:

返回接收者視圖層次中最遠的派生(包括它自己)的特定的點。 - (UIView )hitTest: (CGPoint)point withEvent:(UIEvent )event 參數 point 接收者座標系中的點 event 觸發這個方法 的事件或者是若是這個方法被預調用就返回nil 返回值 一個視圖對象最遠的派生點。若是這個 點位於接收者以外就返回nil 討論 這個方法貫穿視圖的層次發送pointInside:withEvent: 消息到 每個子視圖用來決定那個子視圖須要接收觸摸事件。若是pointInside:withEvent: 返回YES, 那麼視圖的層次所有貫穿;不然視圖層次的分支是被否認的。你不太須要調用這個方法,可是 你須要重寫它用來隱藏子視圖的觸摸事件。 若是視圖是隱藏的,禁止用戶交互的或者透明值小 於01那麼這個方法不可用
13.insertSubview:belowSubview:
//    
    
    /*
    插入視圖到顯示鏈的底層 - (void)insertSubview:(UIView )view belowSubview:(UIView )siblingSubview 參數 view 一個須要插入到其餘視圖底部的視圖。它將從它的父視圖移除若是 它不與相鄰視圖的相鄰 siblingSubview 一個相鄰視圖將會在插入的視圖之上
    insertSubview:aboveSubview: 在視圖層次頂層插入一個視圖 - (void)insertSubview:(UIView )view aboveSubview:(UIView )siblingSubview 參數 view 一個插入被用來放在頂層的視圖。它 將會從父視圖中移除若是它不是相鄰視圖 siblingSubview 一個相鄰視圖用來放在插入視圖的後 面
insertSubview:atIndex: 插入視圖到指定的索引 - (void)insertSubview:(UIView *)view atIndex: (NSInteger)index 參數 view 插入的視圖,這個值不能是nil index 子視圖索引從0開始而且不能 大於子視圖的數量
     */
    
    [self.view insertSubview:testView belowSubview:bringView];
    [self.view insertSubview:bringView aboveSubview:testView];
    [self.view insertSubview:testView atIndex:0];

// 14.isDescendantOfView:

BOOL isSub = [self.view isDescendantOfView:testView];
    
   // 14.isDescendantOfView:
   /* 返回一個布爾值指出接收者是不是給定視圖的子視圖或者指向那個視圖 - (BOOL)isDescendantOfView:(UIView *)view 參數 view 一個視圖用來測試子視圖在視圖層次中 的關係 返回值 若是接收者是視圖的子視圖就返回YES,或者視圖就是接收者;不然就是NO
    */

15.layoutIfNeeded

//    15.layoutIfNeeded
    
   /* 排列子視圖若是須要的話 - (void)layoutIfNeeded 討論 使用這個方法來關注子視圖的排列在繪 制前*/
    
    [self.view layoutIfNeeded];

16.layoutSubViews

-(void)layoutSubviews
{
   /* layoutSubviews
    排列子視圖 - (void)layoutSubviews 討論 當layoutIfNeeded被調用是子類用來重寫這個方法來 排列子視圖。默認實現這個方法不作任何事情。*/
    NSLog(@"layoutSubviews");

}

17.pointInside:withEvent:

pointInside:withEvent:
返回一個布爾值指出接收者是否包含特定的點 - (BOOL)pointInside:(CGPoint)point withEvent: (UIEvent *)event 參數 point 一個在接收者座標系內的點 event 這個方法的目標事件或者若是這 個方法被預調用返回nil 返回值 若是點在接收者邊界內返回YES,不然返回NO
  1. removeFromSuperview
    removeFromSuperview

把接收者從它的父視圖或者窗口移除,並在響應鏈中移除。 - (void)removeFromSuperview 討 論 接收者同時釋放;若是你計劃重用它,要肯定在發送消息前保持它並在添加到其餘UIView 對象做爲子視圖後移除。 不要在顯示的時候調用

  1. sendSubviewToBack
    //sendSubviewToBack:

/ 移動指定的子視圖到它相鄰視圖的後面 - (void)sendSubviewToBack:(UIView )view 參數 view 一個子視圖用來移動到它後面去*/

  1. setNeedsDisplay

//  setNeedsDisplay
  /*  控制接收者的邊界矩形被標記爲須要顯示 -(void)setNeedsDisplay 討論 默認狀況下,視圖幾何 圖形的改變自動重繪而不須要調用drawRect:方法。所以,你須要去請求視圖重繪當視圖的數 據或者狀態改變的時候。從這個意義上來講,向視圖發送setNeedsDisplay消息。任何UIView 對象標記爲須要顯示後將會在應用程序循環中自動從新繪製。
   */
    
    [self.view setNeedsDisplay];
  1. setNeedsDisplayInRect

//setNeedsDisplayInRect:
   /* 標記接收者中的特定的矩形區域爲須要顯示,或者添加接收者現有的其餘無效區域 - (void)setNeedsDisplayInRect:(CGRect)invalidRect 參數 invalidRect 標記接收者的矩形區域爲 無效的;他須要在接收者座標系中定義。 討論 默認狀況下,視圖幾何圖形的改變自動重繪而 不須要調用drawRect:方法。所以,你須要去請求視圖重繪當視圖的數據或者狀態改變的時 候。使用這個方法或者用setNeedsDisplay方法來標記視圖須要顯示的地方。*/
    
    [self.view setNeedsDisplayInRect:CGRectMake(10, 10, 10, 10)];
  1. setNeedsLayout

// setNeedsLayout
    /*設置當子視圖顯示的時候須要從新排列 - (void)setNeedsLayout 討論 若是你調用這個方法在下 一個顯示方法之間,那麼layoutIfNeeded排列子視圖;不然將不會作任何事情*/
    
    [self.view setNeedsLayout];
  1. sizeThatFits

//sizeThatFits:
    /*計算並返回一個最好的適應接收者子視圖的大小 - (CGSize)sizeThatFits:(CGSize)size 參數 size 接收者首選的尺寸 返回值 一個新的大小用來適應接收者子視圖 討論 默認的實現返回大小 參數 子類重寫這個方法用來返回特定視圖的大小。舉個粒子,UISwitch返回一個修正過的大 小,UIImageView返回圖片的大小 這個方法並無改變接收者的大小*/
    CGSize size = [self.view sizeThatFits:CGSizeMake(100, 100)];
  1. sizeToFit

//sizeToFit
   /* 調整大小並移動接收者視圖大小因此他包含了他的子視圖 - (void)sizeToFit 討論 這個方法使用 sizeThatFits: 方法來決定大小。子類須要重寫sizeThatFits:用來計算正確的尺寸大小。默認的 實現不作任何事情。*/
    [self.view sizeToFit];
相關文章
相關標籤/搜索