UIWindow、 UIView及UILabel

       在正式進入UI之前,我們需要了解一些知識。

       蘋果手機的分辨率:iPhone3GS  320*480; iPhone4和iPhone4S 640*960;iPhone5c、5S 640*1136;

iPhone6  750*1334; iPhone6plus 1080*1920。 

       屏幕尺寸如3.5英寸:320 * 480, 如果採用的是Retina屏,寬和高都要分別乘以2,這也就是爲什麼3GS和4同爲3.5英寸,但是分辨率卻差了4倍。

       學習UI需要使用xcode中空工程,iOS -> Application -> Empty Application.進入之後運行會出現設備的模擬器,通過command +1,+2,+3可以調整模擬器的大小分別100%,75%,50%。如果沒有模擬器進入window -> device -> 添加設備模擬器。使用command + shift + h, 可以返回模擬器的主界面,輸入兩次h效果同iPhone雙擊home鍵。

        一個完整iOS App  = 各種各樣的UI設計 + 業務邏輯 + 算法。

       iOS從2.0開始到7.0都是擬物化的設計風格,7.0則放棄了這一設計,以線條爲主,更傾向於扁平化的設計風格。


一  UIWindow

       雖然我們還沒學習UIView,但是你應當有一種意識,UIWindow是UIView的一個子類,繼承其所有的屬性、方法和實例變量。

       UIWindow有什麼作用?

       UIWindow用來承載UIView的視圖給用戶,如果沒有window,設備將是一片漆黑。

       UIWindow有什麼特點?

       UIWindow伴隨着整個應用程序的生命週期,知道app結束時才釋放。我們通常不對它進行太多的設置和操作。一個app通常只有一個window。

       UIWindow如何創建對象?


        UIWindow *window = [UIWindow alloc] initWithFrame:[[UIScreen  mainScreen] bounds]];

        self.window.backgroundColor = [UIColor  grayColor];

         [self.window  makeKeyAndVisible];


         以上代碼對於剛從OC過來的同學來說有很多陌生的代碼,建議進入頭文件中去查看。mainScreen返回一個代表設備屏幕的對象,bounds是一個返回值爲CGRect的實例方法。大家首先要樹立一種控件也是一種類,格式和我們學得OC相同。CGRect 是一個結構體,有兩個元素:CGPointer origin; CGSize  size; ,  CGPointer  也有兩個元素: CGFloat x; CGFloat y;  CGSize 有兩個元素: CGFloat width; CGFloat height;   其中的CGFloat就是double。


二   UIView

      view(是“視圖”的意思):屏幕上的一塊矩形區域。不同的空間對應着不同類型的視圖。換句話說,UIView有很多子類,而且功能不盡相同。需要將UIView重視起來,APP中所有的可視化空間全部是UIView或者其子類。

      如何創建一個UIView對象?

      代碼如下

       UIView *aView = [UIVew  alloc]initWithFrame:CGRectMake(CGFlaot x, CGFlaot y, CGFlaot width, 

       CGFloat heigth)];  // 開闢空間並初始化

       aView.backgroudColor = [UIColor redColor]; // 給屬性賦值

       [self.window  addSubview: aView]; // 將視圖添加到父視圖中

       [aView  release] ;  // 釋放aView的保有權


      首先add方法和集合類的對象一樣自動保有元素的所有權,所以釋放aView沒有問題。

      其次, CGRectMake()是快速創建結構體的方法,frame是一個CGRect類型的結構體。

      最後,說明一下NSRect類型結構體重各元素的作用。

      要想在屏幕上畫出一個矩形,首先知道位置,其次知道大小。CGRect的兩個元素CGPointer和CGSize就是分別代表位置和大小。iOS中爲了佈局創建了平面座標系。它的原點爲屏幕的左上角。水平向右是X的正方向,垂直向下是Y的正方向。這樣CGRect的4各元素就都清楚明白了。

      需要注意的是如果子視圖超過了父視圖的邊界,超過的 部分是沒有響應的。

     center

     center其實是frame的衍生品,他們兩個完全等價。center就是值矩形視圖的中心座標。他有兩個元素:CGFloat x,CGFloat y。 center.x = frame.origin.x + frame.size.width/2      center.y = frame.origin.y + frame.size.height/2  .

     bounds

     bounds是一個CGRect類型的結構體。只不過它是自己的座標系,它的子視圖要以這個座標系爲準。它可以設置左上角的座標爲任意值。使用較少。

     先說明一下frame、bounds、center的聯繫。

     當frame.origin變化時,center也是變化的,反之,亦然;當frame.size變化時,bounds的size也是變化的,反之亦然;當center變化時,bounds.origin是不變的,反之亦然。 

     重點說明一下UIView的方法、屬性。

     1 插入元素方法

      addSubview:    , insertSubview:  atIndex,  insertSubview:  aboveSubview, insertSubview: belowSubview。 當UIView對象調用這些方法時,會將參數subview添加爲自己的子視圖。而且插入越早編號越靠前,離用戶越遠。這裏透露一個小技巧,在控制檯有一個交叉的兩個矩形的圖標,點擊它可以查看層次。

     2  管理層次方法

      bringSubviewToFront:   ,   sendSubviewToBack:,   exchangeSubviewAtIndex:   withSubviewAtIndex:,     removefromSuperview. 可以用來調整和用戶的距離。

     3 屬性

     hidden  : 是否可見  BOOL

     alpha: 不透明度  CGFloat

     superview   返回父視圖   UIView

     subv      返回子視圖   NSArray

     tag    爲對象添加標籤,使用viewWithTag方法來調用對象。注意tag一般都大於1000;integer。


三  UILabel 

      UILabel: 是UIView的子類,可以顯示文本。它在APP中出現的次數是最多的。

      屬性:

      text:用來顯示文本的內容,使用字符串賦值。

      textColor:用來更改字符串的顏色

      textAligment:用來進行水平的對齊操作。 NStextAligment是一個枚舉,NStextAligmentLeft  = 0,center = 1, right = 2.

      backgroundColor: 用來顯示控件的輪廓。

      font :用來管理字符串的字體和大小等特性:fontWithName: size: , systemFontOfSize:。

     numberOfLines: NSinteger  字符串顯示幾行。默認是1行,如果設置爲0,系統自動判斷。

     lineBreakMode:  NSlineBreakMode 是一個枚舉類型。記住兩個:NSlineBreakByWordWrapping.NSlineBreakByCharWrapping. 第一個值0, 第二個值1.

    shadowColor :陰影的顏色

   shadowOffset:陰影的偏移。後面的參數是一個NSPointer ,第一個元素代表X方向的偏移,另一個代表Y方向的偏移。

     

                

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章