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

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

一、要求

完成下面的布局

?

?

二、分析

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

三、實現思路

?

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

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

(3)可以先嘗試逐個的添加格子,最后考慮使用for循環,完成所有uiview的創建

(4)加載app數據,根據數據長度創建對應個數的格子

(5)添加格子內部的子控件

(6)給內部的子控件裝配數據

四、代碼示例

 1 //
  2 //  YYViewController.m3 //  九宮格練習4 //
  5 //  Created by 孔醫己 on 14-5-22.6 //  Copyright (c) 2014年 itcast. All rights reserved.7 //
  8 9 #import "YYViewController.h"10 11 @interface YYViewController ()12 @property(nonatomic,strong)NSArray *apps;13 @end14 15 @implementation YYViewController16 17 18 //1.加載數據19 - (NSArray *)apps20 {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)viewDidLoad29 {30     [super viewDidLoad];31     NSLog(@"%d",self.apps.count);32     33     //2.完成布局設計34     35     //三列36     int totalloc=3;37     CGFloat appvieww=80;38     CGFloat appviewh=90;39     40     CGFloat margin=(self.view.frame.size.width-totalloc*appvieww)/(totalloc+1);41     int count=self.apps.count;42     for (int i=0; i<count; i++) {43         int row=i/totalloc;//行號44         //1/3=0,2/3=0,3/3=1;45         int loc=i%totalloc;//列號46         47         CGFloat appviewx=margin+(margin+appvieww)*loc;48         CGFloat appviewy=margin+(margin+appviewh)*row;49         50         51         //創建uiview控件52         UIView *appview=[[UIView alloc]initWithFrame:CGRectMake(appviewx, appviewy, appvieww, appviewh)];53         //[appview setBackgroundColor:[UIColor purpleColor]];54         [self.view addSubview:appview];55         56         57         //創建uiview控件中的子視圖58         UIImageView *appimageview=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 80, 50)];59         UIImage *appimage=[UIImage imageNamed:self.apps[i][@"icon"]];60         appimageview.image=appimage;61         [appimageview setContentMode:UIViewContentModeScaleAspectFit];62        // NSLog(@"%@",self.apps[i][@"icon"]);63         [appview addSubview:appimageview];64         65         //創建文本標簽66         UILabel *applable=[[UILabel alloc]initWithFrame:CGRectMake(0, 50, 80, 20)];67         [applable setText:self.apps[i][@"name"]];68         [applable setTextAlignment:NSTextAlignmentCenter];69         [applable setFont:[UIFont systemFontOfSize:12.0]];70         [appview addSubview:applable];71         72         //創建按鈕73         UIButton *appbtn=[UIButton buttonWithType:UIButtonTypeCustom];74         appbtn.frame= CGRectMake(10, 70, 60, 20);75         [appbtn setBackgroundImage:[UIImage imageNamed:@"buttongreen"] forState:UIControlStateNormal];76         [appbtn setBackgroundImage:[UIImage imageNamed:@"buttongreen_highlighted"] forState:UIControlStateHighlighted];77         [appbtn setTitle:@"下載" forState:UIControlStateNormal];78         appbtn.titleLabel.font=[UIFont systemFontOfSize:12.0];79         [appview addSubview:appbtn];80         81         [appbtn addTarget:self action:@selector(click) forControlEvents:UIControlEventTouchUpInside];82     }83 84 }85 86 -(void)click87 {88     //動畫標簽89     UILabel *animalab=[[UILabel alloc]initWithFrame:CGRectMake(self.view.center.x-100, self.view.center.y+20, 200, 40)];90     [animalab setText:@"下載成功"];91     animalab.font=[UIFont systemFontOfSize:12.0];92     [animalab setBackgroundColor:[UIColor brownColor]];93     [animalab setAlpha:0];94     [self.view addSubview:animalab];95     96 //    [UIView beginAnimations:Nil context:Nil];97 //    [animalab setAlpha:1];98 //    [UIView setAnimationDuration:4.0];99 //    [UIView commitAnimations];
100     
101     //執行完之后,還得把這給刪除了,推薦使用block動畫
102     
103     [UIView animateWithDuration:4.0 animations:^{
104     [animalab setAlpha:1];
105     } completion:^(BOOL finished) {
106         //[self.view re];
107     }];
108 }
109 
110 - (void)didReceiveMemoryWarning
111 {
112     [super didReceiveMemoryWarning];
113 }
114 

?

執行效果:

轉載于:https://www.cnblogs.com/asd5551680/p/4068363.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258037.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258037.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258037.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

工業4.0時代企業如何用CRM實現模式變革

當前&#xff0c;全球經濟正處于變革的巨大浪潮之中&#xff0c;對于制造業來說&#xff0c;德國提出工業4.0&#xff0c;美國提出工業互聯網&#xff0c;而我國&#xff0c;正在大力推進“中國制造2025”。制造業實現轉型升級勢在必行。我國政府提出&#xff0c;要大力支持傳統…

oracle 9.2.0.2,在RedHat enterprise server 3 安裝oracle9i 2.0.0.1 并升級到9.2.0.6

oracle9i 2.0.4上個月從oracle網站下載沒有安裝在els3上。參考了網上的一些文章&#xff0c;并根據文章的提示找了一些資料和補丁&#xff0c;完成了這次的安裝。[more]1.安裝RedHat EL3現在的安裝界面都做的很好了,一路NEXT就可以安裝了.如果有困難,請參考其他linux安裝文檔進…

spring -mvc 將對象封裝json返回時刪除掉對象中的屬性注解方式

spring -mvc 將對象封裝json返回時刪除掉對象中的屬性注解方式 在類名,接口頭上注解使用在 JsonIgnoreProperties(value{"comid"}) //希望動態過濾掉的屬性 例 JsonIgnoreProperties(value{"comid"}) public interface 接口名稱{ } JsonIgnorePro…

HawkHost老鷹主機更換主域名方法

http://www.yd631.com/change-hawkhost-primary-domain/圣誕節優惠期間&#xff0c;很多童鞋們購買了老鷹主機&#xff0c;可能由于大家初次使用海外主機或者是CP面板的空間。購買主機的時候主域名是隨便輸入的或者是輸入后想換一個。我們可以通過以下方法進行操作。之前我們QQ…

ERP CRM與SCM整合過程中的知識轉移

ERP(Enterprise Resource Planning&#xff0c;企業資源計劃)、CRM(Customer Relationship Management&#xff0c;客戶關系管理)、SCM、CRM(Customer Relationship Management&#xff0c;客戶關系管理)、SCM(supply chain management&#xff0c;供應鏈管理)作為現代企業管理…

ubuntu 64 12.04 oracle,ubuntu server 12.04 x86_64 下安裝oracle xe 11 x86_64

1.下載oracle xe我下載的是oracle-xe-11.2.0-1.0.x86_64.rpm.zip2. 安裝必要程序或文件$sudo apt-get install unzip chkconfig libaio1 alien3.解壓上面的oraclexxx.zip文件,然后進行轉換$sudo alien -d --scripts oracle-xe-11.2.0-1.0.x86_64.rpm上面轉換完成后會生成一個 o…

IEnumerable 遍歷用法

咋一看到IEnumerable這個接口&#xff0c;我們可能會覺得很神奇&#xff0c;在一般的編程時&#xff0c;基本上我們是想不到去用它的&#xff0c;可是&#xff0c;俗話說得好&#xff0c;存在便是道理&#xff0c;那么&#xff0c;它對我們來說&#xff0c;能夠帶來哪些奇妙的事…

DELPHI設置枚舉類型size

delphi枚舉類型長度默認為2個字節(單字)&#xff0c;而在C中枚舉為4個字節(雙字)&#xff0c;如果需要跨這兩個平臺編程&#xff0c;傳輸結構時會由于數據長度不一造成災難。 經過查找資料&#xff0c;原來delphi可以通過{$Z} {$Z-} {$Z1} {$Z4} 等宏設置枚舉類型的長度&#x…

Nginx 反向代理 websocket 協議

為什么80%的碼農都做不了架構師&#xff1f;>>> 主要配置內容 server {listen 80;server_name xxx.xxx.xxx;location / {try_files $uri $uri/ /index.html;root /workspace/www;index index.html index.htm;}location ^~/letchat/ {proxy_pass http:/…

oracle中區間大小,Oracle的邏輯結構(表空間、段、區間、塊)——總結

Oracle邏輯結構全景結構圖以下為個人整理的一些關于Oracle邏輯結構的相關數據字典&#xff1a;SELECT * FROMDBA_TABLESPACES--記錄各個表空間的詳細信息SELECT * FROMDBA_TABLESPACE_USAGE_METRICS--記錄各個表空間的使用狀況SELECT * FROMDBA_DATA_FILES --記錄各個數據文件的…

C#3.0之神奇的Lambda表達式和Lambda語句

“Lambda 表達式”是一個匿名函數&#xff0c;它可以包含表達式和語句&#xff0c;并且可用于創建委托或表達式目錄樹類型。所有 Lambda 表達式都使用 Lambda 運算符 >&#xff0c;該運算符讀為“goes to”。該 Lambda 運算符的左邊是輸入參數&#xff08;如果有&#xff09…

[C++] Nested Radical Constant

做高數助教被天煞的大一學生坑了&#xff0c;發現是個未解問題&#xff0c;沒有解析解。。 用C搞了下&#xff0c;就是這樣。。。 No closed-form expression is known for this constant (Finch 2003, p. 8; S. Plouffe, pers. comm., Aug. 29, 2008). /*********************…

api-gateway實踐(03)新服務網關 - 網關請求攔截檢查

參考鏈接&#xff1a;http://www.cnblogs.com/jivi/archive/2013/03/10/2952829.html 一、為什么要攔截檢查請求&#xff1f; 防止重放攻擊、篡改重放&#xff0c;進行使用規格檢查 1、請求可能是重放攻擊 重放攻擊的基本原理就是把以前竊聽到的數據原封不動地重新發送給接收方…

oracle存儲過程關鍵字有哪些,ORACLESTREAMS存儲過程中的一些參數有哪些?

1&#xff0c;maintain_mode參數可取golbal或transportable tablepsaces&#xff0c;當該參數取global時&#xff0c;表示streams進行全庫復制&#xff0c;否則表示streams進行表空間復制&#xff0c;需要在tablespace_names參數中指定待復制的一個或多個表空間。2&#xff0c;…

正則驗證多個郵箱用分號隔開

代碼如下&#xff1a; <script> var str xxxx126.com;123234234qq.com;xxxxxxxxxx.con.cn; var reg /^((([a-z0-9_\.-])([\da-z\.-])\.([a-z\.]{2,6}\;))*(([a-z0-9_\.-])([\da-z\.-])\.([a-z\.]{2,6})))$/; if(reg.test(str)){ alert(1); }else{ …

轉載-使用 Feed4JUnit 進行數據與代碼分離的 Java 單元測試

JUnit 是被廣泛應用的 Java 單元測試框架&#xff0c;但是它沒有很好的提供參數化測試的支持&#xff0c;很多測試人員不得不把測試數據寫在程序里或者通過其它方法實現數據與代碼的分離&#xff0c;在后續的修改和維護上有諸多限制和不便。Feed4JUnit 是開源的基于 JUnit 的擴…

青島智能院助力智慧城市 打造智能產業“黃埔軍校”

作為青島市的主干道之一&#xff0c;山東路的擁堵狀況一直讓人頭疼。近日&#xff0c;因為一種交通組織優化方案的實施&#xff0c;山東路和延吉路的通行率提高了近50%。而研發這種智能管控系統的正是位于青島高新區的青島智能產業技術研究院。截止今年5月份&#xff0c;青島智…

oracle備份歸檔文件,oracle 如何不備份已經備份的歸檔

在Oracle數據庫備份歸檔日志時&#xff0c;通常會保存最近幾天的歸檔日志文件不刪除。如&#xff1a;backup archivelog all;delete noprompt archivelog all completed before sysdate -14; 在本地保留14天的歸檔日志&#xff0e;再備份時&#xff0c;歸檔會重復再備份一次。…

博客遷移指南

1.今天起 博客遷移至farbox 2. 新博客地址&#xff0c;http://yoon.farbox.com轉載于:https://www.cnblogs.com/yoon/p/5003384.html

iOS 第三方登錄 !

http://www.it165.net/pro/html/201409/21854.html 轉載于:https://www.cnblogs.com/Seeulater/p/4076727.html