iOS開發UI篇—九宮格座標計算

來源:互聯網
上載者:User

標籤:

一、要求

完成下面的布局

 

二、分析

尋找左邊的規律,每一個uiview的x座標和y座標。

三、實現思路

 

(1)明確每一塊用得是什麼view

(2)明確每個view之間的父子關係,每個視圖都只有一個父視圖,擁有很多的子視圖。

(3)可以先嘗試逐個的添加格子,最後考慮使用for迴圈,完成所有uiview的建立

(4)載入app資料,根據資料長度建立對應個數的格子

(5)添加格子內部的子控制項

(6)給內部的子控制項裝配資料

四、程式碼範例

  1 //  2 //  SLViewController.m  3 //  九宮格練習  4 //  5 //  Created by apple on 14-5-21.  6 //  Copyright (c) 2014年 itcase. All rights reserved.  7 //  8   9 #import "SLViewController.h" 10  11 @interface SLViewController () 12 @property(nonatomic,strong)NSArray *apps; 13 @end 14  15 @implementation SLViewController 16  17  18 // 1.載入資料 19 - (NSArray *)apps 20 { 21     if (!_apps) { 22         NSString *path = [[NSBundle mainBundle]pathForResource:@"app.plist" ofType:nil]; 23         _apps = [NSArray arrayWithContentsOfFile:path]; 24     } 25     return _apps; 26 } 27  28 - (void)viewDidLoad 29 { 30     [super viewDidLoad]; 31     NSLog(@"%ld",self.apps.count); 32      33     // 2.完成布局設計 34     // 三列 35     int totalloc = 3; 36     CGFloat appvieww = 80; 37     CGFloat appviewh = 90; 38      39     CGFloat margin = (self.view.frame.size.width-totalloc * appvieww) / (totalloc + 1); 40     int count = self.apps.count; 41     for (int i = 0; i < count; i++) { 42         int row = i / totalloc;// 行號 43         // 1/3 = 0,2/3 = 0,3/3 = 1; 44         int loc = i % totalloc;// 列號 45          46         CGFloat appviewx = margin + (margin + appvieww) * loc; 47         CGFloat appviewy = margin + (margin + appviewh) * row; 48          49         // 建立uiview控制項 50         UIView *appview = [[UIView alloc]initWithFrame:CGRectMake(appviewx, appviewy, appvieww, appviewh)]; 51         // [appview setBackgroundColor:[UIColor purpleColor]]; 52         [self.view addSubview:appview]; 53          54          55         // 建立uiview控制項中的子視圖 56         UIImageView *appimageview = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 80, 50)]; 57         UIImage *appimage = [UIImage imageNamed:self.apps[i][@"icon"]]; 58         appimageview.image = appimage; 59         [appimageview setContentMode:UIViewContentModeScaleAspectFit]; 60         //  NSLog(@"%@",self.apps[i][@"icon"]); 61         [appview addSubview:appimageview]; 62          63         // 建立文字標籤 64         UILabel *applable = [[UILabel alloc]initWithFrame:CGRectMake(0, 50, 80, 20)]; 65         [applable setText:self.apps[i][@"name"]]; 66         [applable setTextAlignment:NSTextAlignmentCenter]; 67         [applable setFont:[UIFont systemFontOfSize:12.0]]; 68         [appview addSubview:applable]; 69          70         // 建立按鈕 71         UIButton *appbtn = [UIButton buttonWithType:UIButtonTypeCustom]; 72         appbtn.frame =  CGRectMake(10, 70, 60, 20); 73         [appbtn setBackgroundImage:[UIImage imageNamed:@"buttongreen"] forState:UIControlStateNormal]; 74         [appbtn setBackgroundImage:[UIImage imageNamed:@"buttongreen_highlighted"] forState:UIControlStateHighlighted]; 75         [appbtn setTitle:@"下載" forState:UIControlStateNormal]; 76         appbtn.titleLabel.font = [UIFont systemFontOfSize:12.0]; 77         [appview addSubview:appbtn]; 78          79         [appbtn addTarget:self action:@selector(click) forControlEvents:UIControlEventTouchUpInside]; 80     } 81      82 } 83  84 -(void)click 85 { 86     // 動畫標籤 87     UILabel *animalab = [[UILabel alloc]initWithFrame:CGRectMake(self.view.center.x-100, self.view.center.y+20, 200, 40)]; 88     [animalab setText:@"下載成功"]; 89     animalab.font = [UIFont systemFontOfSize:12.0]; 90     [animalab setBackgroundColor:[UIColor brownColor]]; 91     [animalab setAlpha:0]; 92     [self.view addSubview:animalab]; 93      94     /* 95     [UIView beginAnimations:Nil context:Nil]; 96     [animalab setAlpha:1]; 97     [UIView setAnimationDuration:4.0]; 98     [UIView commitAnimations]; 99     */100     101     // 執行完之後,還得把這給刪除了,推薦使用block動畫102     [UIView animateWithDuration:4.0 animations:^{103         [animalab setAlpha:1];104     } completion:^(BOOL finished) {105 //         [self.view removeFromSuperview];106     }];107 }108 109 @end

 

執行效果:

 

iOS開發UI篇—九宮格座標計算

聯繫我們

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