【Objective-C學習記錄】第六天

來源:互聯網
上載者:User

標籤:

今天學習了UI部分的內容,有點多,好好整理下。

首先是UIWindow。

直接執行個體化UIView:UIView *view = [[UIView alloc] init];

然後對其進行大小設定:view.frame = CGRectMake(10,30,355,627);學過HTML或者介面方面的都瞭解這個Rect,顧名思義就是一個矩形Rect(x,y,width,height)。x表示矩形的橫座標,y表示矩形的縱座標,width表示矩形的寬,height表示矩形的高,有了這四個參數,我們就能在iPhone上確定一塊視窗了。我們在生活中座標軸一般是左下角開始,向右x軸遞增,向上y軸遞增,而電腦螢幕是從左上方開始計算的,即向右x軸遞增,向下y軸遞增。在這裡這塊矩形的大小,在iPhone6上距離螢幕邊緣四周10px,至於y軸方向為什麼位移30px,是因為iOS的通知欄佔了20px,並且通知欄的優先順序非常高。

現在我們在模擬器上還是看不到任何東西,是因為我們只執行個體化了這個視窗,還沒有設定它的顏色:view.backgroundColor = [UIColor yellowColor];

最後將這個視窗添加為整個表單的子類即可:[self.view addSubView:view];

接下來是一些需要記憶的屬性/參數:

  frame

  view.frame.origin.x - view距離螢幕x的位移,為10px

  view.frame.origin.y - view距離螢幕y的位移,為30px

  view.frame.size.width - view的寬

  view.frame.size.height - view的高

  bounds

  (view.bounds.origin.x, view.bounds.origin.y, view.bounds.size.width, view.bounds.size.height)

  bounds表示view邊框的大小,其x和y始終為0,width、height與frame的相等,在某種程度上frame可以代替bounds使用。

  center

  (view.center.x,view.center.y) - 螢幕中心點

  擷取螢幕解析度UIScreen:

  [[UIScreen mainScreen]bounds].size.width

  [[UIScreen mainScreen]bounds].size.height

表單也有子父的概念,子視圖會被嵌套在父視圖中,類似於HTML裡的<div><div></div></div>,其中一個子視圖的父視圖只能有一個,子視圖可以有多個。視圖的層級關係具體總結為:1.在同一個父視圖中時,先加入的view會被覆蓋在下面;2.子視圖根據父視圖進行遮擋,如果父視圖層級低於其他同級視圖,那麼該父視圖的子視圖也會被遮擋。

首先是給一個視圖指定它的父視圖:UIView *superView = view.superView; 

或者通過另一種方式為父視圖添加它的子視圖:[superView addSubView:view2];[superView addSubView:view3];

接著我們可以對該父視圖進行遍曆,這裡使用枚舉遍曆:

  NSArray *subViewsArray = superView.subViews;

  for(UIView *view in subViewsArray)

    //TODO

另外可以給視圖設定標籤,這樣我們就可以通過標籤來尋找這個視圖,這個tag跟Unity裡的tag有點類似:view.tag = 1;根據tag擷取視圖:UIView *view = [superView viewWithTag:1];

交換視圖。

規則:1.交換兩個層的視圖時,必須填寫正確的層數;2.交換兩個層後,對應的子視圖的數組下標也會改變。

[superView exchangeSubViewAtIndex:0 withSubViewAtIndex:1];如果層級不存在,交換是無效的。

插入視圖到指定的層:

[superView insertSubView:view belowSubview:view2];

將一個視圖放入最高層/最底層

[superView bringSubViewToFront:view];

[superView sendSubViewToBack:view];

接下來是自適應的內容:

  首先要設定准許視圖自適應:view.autoresizesSubViews = YES;

  接著就可以設定自適應的方式:view.autoresizingMask = UIViewAutoresizingFlexibleWidth;這裡有幾個選項:UIViewAutoresizingFlexibleHeight不一一列舉,簡單來說就是左右上下寬高的自適應。

其次是UILabel。

label與view類似,首先執行個體化:UILabel *label = [[UILabel alloc] init];

設定大小:label.fram = CGRectMake(10,100,350,300);

設定顏色:label.backgroundColor = [UIColor blueColor];

設定內容:label.text = @"Hello iOS";

配置模式:label.textAlignment = NSTextAlignmentCenter;

文字顏色(兩種方式):1.label.textColor = [UIColor greenColor];其中有一個特殊的clearColor表示透明色

           2.label.textColor = [UIColor colorWithRed:0.1 green:0.8 blue:0.2 alpha:1];即通過RPGA來設定顏色

字型設定:label.font = [UIFont systemFontOfSize:25];25是字型大小

     label.font = [UIFont boldSystemFontOfSize:25];

     label.font = [UIFont italicsSystemFontOfSize:25];

     並且可以查看系統內所有的字型:

     for(NSString *name in [UIFont familyNames])

       NSLog(@"%@",name);

     label.font = [UIFont fontWithName: @"Apple Color Emoji" size:25];

字型陰影:label.shadowColor = [UIColor redColor];

     label.shadowOffset = CGSizeMake(5,5);

換行模式:label.lineBreakMode = NSLineBreakByCharWrapping;根據字元換行

     label.numberOfLines = 10;設定顯示的行數

根據字串大小計算label大小:

     CGSize size = [label.text sizeWithFont:label.font constrainedToSize:CGSizeMake(355,1000) lineBreakMode]:NSLineBreakByCharWrapping];

最後是UIImage。

這裡使用讀取本地圖片的方式載入圖片。

首先需要設定圖片的路徑,因為圖片放在了本工程的目錄下,所以我們需要先擷取這個工程的路徑:NSString *path = [[NSBundle mainBundle] resourcePath];

然後設定圖片路徑:NSString *imagePath  = [NSString stringWithFormat:@"%@/bg.png",path];

根據路徑讀取圖片:UIImage *image = [[UIImage alloc] initWithContentsOfFile:imagePath];

在讀取了圖片後還不能顯示,需要通過一個載體來載入圖片,所以需要執行個體化一個圖片對象:UIImageView *imageView = [[UIImageView alloc] initWithImage:image];

最後設定一下大小,同時也能設定背景色:imageView.frame = CGRectMake(10,100,300,300);

                   imageView.backgroundColor = [UIColor yellowColor];

內容格式:imageView.contentMode = UIViewContentModeScaleToFill;//展開充滿整個載體

     imageView.contentMode = UIViewContentModeScaleAspectFill;//展開不改變比例,充滿較長的一邊

     imageView.contentMode = UIViewContentModeScaleAspectFit;//展開不改變比例,充滿較短的一邊

播放序列幀動畫:

  幀動畫是2D遊戲裡常見的一種遊戲動畫形式,原理就是我們小時候看到過的翻頁動畫,通過不斷的替換顯示的圖片,造成視覺上的動態效果。首先準備好一組幀動畫的圖片,張數為count,命名為"png$.png"匯入到工程目錄下。

  接著用一個數組來儲存這些圖片:NSMutableArray *imageArray = [[NSMutableArray alloc] init];

                    for(int i = 1;i <= count;i++)

                    {

                       UIImage *image  = [UIImage imageNamed:[NSString stringWithFormat:@"png%d.png",i]];

                       [imageArray addObject:image];

                    }

  然後通過一個圖片載體來播放:UIImageView *imageView = [[UIImageView alloc] init];

  設定大小:imageView.frame = CGRectMake(10,10,300,300);

  添加到父視圖中:[self.view addSubView:imageView];

  同樣可以設定背景顏色:imageView.backgroundColor = [UIColor yelloColor];

  接下來是比較重要的設定:1.指定要播放的序列動畫圖片:imageView.animationImages = imageArray;

              2.設定播放的時間長度:imageView.animationDuration = 3;

              3.設定播放的次數:imageView.animationRepeatCount = 5;

【Objective-C學習記錄】第六天

相關文章

聯繫我們

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