UIView Programming Guide學習筆記

來源:互聯網
上載者:User

標籤:style   blog   http   color   io   使用   ar   for   2014   

ViewCreating and Configuring View Objects Creating View Objects Using Interface Builder 

  用Interface Builder就是大家熟知的用StoryBoard進行頁面的建立,這裡就不多講了。主要是用StoryBoard進行UI的實現還是用Programatic的方法好呢,需要以後的繼續研究。

Creating View Objects Programmatically 

  預設的View的初始化函數是initWithFrame:  ,它將裝置View相對於Superview的座標和大小,如下:

CGRect  viewRect = CGRectMake(0, 0, 100, 100);UIView* myView = [[UIView alloc] initWithFrame:viewRect];

這樣就建立了一個有座標和大小的View.

Setting the Properties of a View 

UIView提供了很多屬性提供給使用者使用,可以通過修改這些屬性達到想要的效果。

這些屬性不一定都會用,但是要瞭解,至少知道有個這樣的東西存在,這樣就方便以後使用了。

Tagging Views for Future Identification 

UIView有一個tag屬性,通過這個屬性,我們就可以用UIView的viewWithTag:  擷取所對應的View。注意這個函數是通過深度優先去遍曆的

 

Creating and Managing a View Hierarchy 

  這一部分主要是就介紹了View Hierarchy的建立和管理,也就是對View這個對象進行管理。

Adding and Removing Subviews 
  1. 通過以下函數可以對Subviews進行添加、刪除、重排序
  • addSubview:
  • insertSubview:
  • 重排序:
    • bringSubviewToFront:
    • sendSubviewToBack:
    • exchangeSubviewAtIndex:withSubviewAtIndex
  • removeFromSuperview:  

  2.當Subview超出Superview的bonds的範圍時,在預設的情況先,多出的部分會被顯示,如果想讓多的部分被切掉可以設定View的ClipsToBonds = YES。

  3.addSubview在下面兩個地方使用比較普遍

  • 在application:didFinishLaunchingWithOptions:  中
- (BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions{    // Override point for customization after application launch.    // Add the view controller‘s view to the window and display.    [window addSubview:viewController.view];    [window makeKeyAndVisible];return YES; }

 

  • 在loadView或者viewDidLoad函數中,對View hierarchy進行管理
    • loadView---------building your View programmatically
    • viewDidLoad-----creat view programmatically or load them from NIB
Hiding Views 

  1.可以用如下方法hide a view

  •   hidden = YES
  •   alpha = 0.0

  2.在View被隱藏後,它將不會顯示。但是會參與到介面的auto-layout過程中。所以當一個介面現在小時等會又要出現的情況下,hidden比remove 一個View要更有效率

  3.關於hidden view的responds to Events

  當一個View被隱藏,它將無法Respond to the events!

  但是!如果這個將要本隱藏的View是現在的First Responder,那麼在他隱藏的時候,不會將Fisrt Responder這個狀態登出掉,所以需要強制的改變這個狀態才行。

  4.關於hidden的動畫

  很多人需要View在hidden時加入動畫,這裡要注意的是,用hidden屬性的話將不會現實動畫,只有用alpha屬性進行hidden才可以加入想要的動畫。

Locating Views in a View Hierarchy 

有兩種方式可以在View Hierarchy中得到想要的View

  • 將View的指標引用儲存下來,下次直接使用
  • 通過View的tag屬性,用viewWithTag:來Get這個View
Translating, Scaling, and Rotating Views 

這裡主要講的是View的變化,比如放大縮小,旋轉等該怎麼實現

  1、UIView的transform屬性包含了一個CGAffineTransform 的結構,在預設的情況下這個屬性是不會對View產生任何影響,

    但我們可以在任何時候對這個transform屬性進行賦值操作,使View的狀態發生改變。

  比如,讓View旋轉45度:

// M_PI/4.0 is one quarter of a half circle, or 45 degrees.CGAffineTransform xform = CGAffineTransformMakeRotation(M_PI/4.0);self.view.transform = xform;

 

  2、transform的操作都是以View的center ponit為原點進行操作的

  3、scaling a view只是改變圖片的長寬,而不改變其center point

Converting Coordinates in the View Hierarchy 

這裡主要將的是 在ViewHierarchy中各View之間的其不同座標參照系下的座標轉換。

  1、對於UIView我們可以用下面兩組函數進行轉換

  • convertPoint:fromView: / convertPoint:toView:
  • convertRect:fromView: / convertRect:toView:

 

將會對這個轉換過程和結果進行很好的詮釋:

 

這裡的藍色和粉色虛線框代表兩個不同的View(藍色的為A View、粉色的為B View),我們將需要轉化的矩形稱作M矩形

此時可以看到,M矩形在A View中的位置是藍色實線的矩形,而通過轉換M矩形在B View中變成了粉色實線的矩形。相當於一個投影,他們有自己獨立的參照系。

 

持續更新中。。。。

 

原創文章,轉載請標明出處,謝謝!

UIView Programming Guide學習筆記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.