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.mzph.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