iOS 開發學習之 User Interface(3)iOS 座標系和 UILabel 與 UIButton

來源:互聯網
上載者:User

標籤:

注意:控制器的視圖預設是透明的,需要給其設定背景。

    a. 建立UILabel對象,使用帶frame參數的初始化方法。

    此參數是結構體類型,包含了該UI對象顯示在視圖上的位置,尺寸。

    iOS 座標系:

       螢幕左上方為(0,0)起始點,

       終點:(各代裝置尺寸不同而變化)

       3GS及之前:(320,480) — 像素 — (320,480)

       4,4s:           (320,  480) — 像素 — (640,960)

       5,5s:(320,568)

   6,6s:(375,667)(plus:414,736)

b. 將UILabel對象添加到當前控制器的視圖上。

 

UILabel基本屬性

     .text                      // 設定文字

     .font                      // 設定文字字型 {

    // 大小

      lb.font = [UIFont systemFontOfSize:17];

      //粗體

      lb.font = [UIFont boldSystemFontOfSize:30];

      //斜體,只對英文有效

      lb.font = [UIFont italicSystemFontOfSize:17];

    //系統的字型

      NSArray *arrFonts = [UIFont familyNames];

    //設定自訂字型

    lb.font = [UIFont fontWithName:@"Bodoni 72 Oldstyle" size:14];

}

     .textColor               // 設定文字顏色 {

    //設定背景色

    lb.backgroundColor = [UIColor redColor];

    //自訂色彩值

    lb.backgroundColor = [UIColor colorWithRed:199.0/255.0 green:150.0/255.0 blue:100.0/255.0 alpha:1.0];

}

     .textAlignment         // 設定文字布局

     .backgroundColor    // 設定文字背景

     .lineBreakMode       // 設定文字換行模式{

    lb.lineBreakMode = NSLineBreakByClipping;

    lb.lineBreakMode = NSLineBreakByTruncatingHead;

    lb.lineBreakMode = NSLineBreakByTruncatingTail;

    lb.lineBreakMode = NSLineBreakByWordWrapping

}

     .numberOfLines      //  設定文字行數,設為 0 代表任意多行,會自動換行

     .clipsToBounds       // 設定是否將子圖層或子視圖的邊界剪下至主圖層或主視圖的邊界

     .adjustsFontSizeToFitWidth    // 文字大小適應視圖對象的寬度

     .minimumScaleFactor            // 最小文字縮放因子 0~1範圍,

     .shadowColor                       // 視圖的陰影顏色

     .shadowOffset                      // 視圖的陰影偏離位置

     .layer                     //  設定視圖對象的圖層屬性 {

          -.borderColor          // 設定視圖的邊框顏色

          -.borderWidth         //  設定視圖的邊框寬度

          -.cornerRadius        //  設定視圖的圓角弧度

}

     .attributedText       // 設定帶屬性的文字

 

  //取得當前視圖的寬度、高度

    CGFloat w = self.view.frame.size.width;

    CGFloat h = self.view.frame.size.height;

 

注意:

  //將label貼到視圖上

    [self.view addSubview:lb];

 

  /*

     app開發:

     原生(頁面在用戶端)

     網頁(頁面在伺服器端)

     混生(前兩者混合)

     網站推薦:coredova--開發混生架構,apicloud

     */

    

  // 建立可變的帶屬性文字的屬性

    NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:lb.text];

    // 為文字添加屬性

    [attrStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:12] range:NSMakeRange(0, 2)];

  //    [attrStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:12 weight:200] range:NSMakeRange(6, 8)];

    //

    [attrStr addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:NSMakeRange(2, 5)];

    [attrStr addAttribute:NSBackgroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(2, 5)];

    //

    lb.attributedText = attrStr;

 

    //研究

    //Core Text 文字排版

 

 

 

 UIButton

   按鈕,使用者可觸摸,並給予使用者響應的視圖控制項。

   繼承自UIControl (UIControl 繼承自UIView),注意與UILabel的區別

     UIControl? 是所有控制類對象(如按鈕,滑動器等)的基類。

     控制?iOS編程是基於事件驅動的。事件是發送給應用程式來通知它使用者動作的對象。事件發生後,會產生訊息發送給應用程式(UIApplication對象),由它進行訊息的分發,指定由誰來處理此事件。

 

UIButton建立及基本屬性,方法

    兩種初始化方式:

       // initWithFrame:

       // buttonWithType: 使用系統給定的類型建立button,注意部分類型已無效。

    .layer                    // 圖層屬性設定按鈕邊框

    setTitle:forState:    // 在不同按鈕狀態設定文字{

    //設定Button的文字,帶有左移或右移的枚舉可以進行或、與或運算

    [btn setTitle:@"我是一" forState:UIControlStateNormal];

    //    UIControlStateNormal       = 0,           //正常狀態

    //    UIControlStateHighlighted  = 1 << 0,      //高亮狀態              // used when UIControl isHighlighted is set

    //    UIControlStateDisabled     = 1 << 1,      //禁用狀態

    //    UIControlStateSelected     = 1 << 2,      //被選中狀態            // flag usable by app (see below)

    //    UIControlStateApplication  = 0x00FF0000,              // additional flags available for application use    

    //    UIControlStateReserved     = 0xFF000000

}

   . titleLabel              //  按鈕上文字所在的UILabel ,唯讀屬性{

    // 訪問Button裡的label,redonly

    btn.titleLabel.text = @"我被修改了";

    btn.titleLabel.backgroundColor = [UIColor redColor];

}

    setTitleColor:forState:   // 在不同按鈕狀態設定文字顏色

    setContentHorizontalAlignment:  // 設定按鈕內容的橫向布局

{

    //設定Button內容的布局

    [btn setContentHorizontalAlignment:UIControlContentHorizontalAlignmentRight];

    [btn setContentVerticalAlignment:UIControlContentVerticalAlignmentBottom];

}

    setContentVerticalAlignment:     // 設定按鈕內容的縱向布局

    .backgroundColor                     // 按鈕背景色,不與狀態關聯

  setSelected:          //使按鈕處於選中狀態{

    //使按鈕處於選中狀態

    [btn setSelected:YES];

}

  setBackgroundImage:forState:    // 在不同按鈕狀態設定背景圖片    [ 背景顏色隨狀態變化? ]

    setImage:forState:                     // 在不同按鈕狀態設定前景圖片{

    //添加前景圖片

    [btn setImage:[UIImage imageNamed:@"btnTree"] forState:UIControlStateNormal];

}

  {

     UIImage?圖片資料. 三種初始化方法:

    imageNamed:                     // 從緩衝中讀取圖片,若無,則從程式包中找,找到後,先緩衝,再返回。否則返回nil

        imageWithContentsOfFile:   // 直接從路徑中找圖片

        imageWithData:                 //  從位元據建立圖片

        *從UIImage擷取圖片尺寸

    //二進位流

    NSData *dataForImg = [NSData dataWithContentsOfFile:@"/Users/arlen/Desktop/code/UIButtonBasic/UIButtonBasic/btnBackChange.png"];

    UIImage *imgForUse2 = [UIImage imageWithData:dataForImg];

     }

 

UIButton 狀態,事件  

    .state              // 可設定按鈕的狀態,正常,高亮,選中等。按鈕初始是正常狀態,當點擊後,狀態發生變化。            

    

     ***addTarget:action:forControlEvents: // 為某一特定事件添加目標對象和行為。(實際上是在內部訊息分發表中註冊該添加操作)

    /* target: 目標對象,訊息的接收者

         action:  標識行為的選取器

         controlEvents: 事件類型

     */

 

iOS 開發學習之 User Interface(3)iOS 座標系和 UILabel 與 UIButton

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.