iOS UI基础 九宫格算法

案例分析:

分析:

代码案例实现:

//

//  ViewController.m

//  01-九宫格算法

//

//  Created by FlyLee on 14-9-12.

//  Copyright (c) 2014年 FLYLEE.CN. All rights reserved.

//

#import "ViewController.h"

@interface ViewController ()

/*

数据容器

*/

@property (nonatomic,strong) NSArray *apps;

@end

@implementation ViewController

//懒加载

- (NSArray *)apps

{

if (_apps == nil) {

// 1.获得plist文件的全路径

NSString *path = [[NSBundle mainBundle] pathForResource:@"app.plist" ofType:nil];

// 2.加载数组

_apps = [NSArray arrayWithContentsOfFile:path];

}

return _apps;

}

- (void)viewDidLoad

{

[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

//1. 每一行的列数

int totalCol = 3;

//2.每一个格子的尺寸及y值的常量

CGFloat appW = 85;

CGFloat appH = 90;

CGFloat startY = 30; //设置Y的初始位置,电池栏20 所以初始位置设置30

CGFloat marginY = 15; //设置Y的初始间隙空间

//3.间隙 = (控制器view的宽带 - 3 *格子的宽度 ) / 4;

CGFloat marginX = (self.view.frame.size.width - totalCol * appW) / (totalCol + 1);

int count = self.apps.count;

//4.根据应用管理的个数,创建格子

for (int i = 0 ; i < count;  i++) {

//4.1 创建view

UIView *appView = [[UIView alloc] init];

appView.backgroundColor = [UIColor redColor];

//4.2 计算行号和列号

// i = 0, 1 ,2 / 3 = 0    初始的都是0行开始  0 , 1 ,  2  ,3 ....

// i = 3, 4 ,5 / 3 = 1

int row = i / totalCol;

// i  =  0 , 3, 6 % 3 = 0 初始的都是0列开始  0 , 1 ,  2  ,3 ....

// i  =  1, 4 , 7 %3 =  1

int col = i % totalCol;

//        4.3  计算x和y

CGFloat appX = marginX + (appW + marginX) * col;

CGFloat appY = startY + (appH + marginY) * row;

appView.frame = CGRectMake(appX,appY, appW,appH);

//4.4 添加格子到控制器的view

[self.view addSubview:appView];

}

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end

时间: 09-12

iOS UI基础 九宫格算法的相关文章

iOS开发UI基础—九宫格坐标计算

iOS开发UI基础-九宫格坐标计算 一.要求 完成下面的布局 二.分析 寻找左边的规律,每一个uiview的x坐标和y坐标. 三.实现思路 (1)明确每一块用得是什么view (2)明确每个view之间的父子关系,每个视图都只有一个父视图,拥有很多的子视图. (3)可以先尝试逐个的添加格子,最后考虑使用for循环,完成所有uiview的创建 (4)加载app数据,根据数据长度创建对应个数的格子 (5)添加格子内部的子控件 (6)给内部的子控件装配数据 四.代码示例 1 // 2 // YYVie

iOS开发基础-九宫格坐标(4)

对iOS开发基础-九宫格坐标(3)的代码进行进一步优化. 新建一个 UIView 的子类,并命名为 WJQAppView ,将 appxib.xib 中的 UIView 对象与新建的视图类进行关联.  WJQAppView 类中声明3个 IBOutlet 属性,与 appxib.xib 中的视图对象包含的 UIImageView . UILabel 和 UIButton 建立连接. WJQAppView 头文件代码如下所示: 1 //WJQAppView.h 2 @interface WJQAp

iOS开发基础-九宫格坐标(6)

继续对iOS开发基础-九宫格坐标(5)中的代码进行优化. 优化思路:把字典转模型部分的数据处理操作也拿到模型类中去实现,即将 ViewController 类实现中 apps 方法搬到 WJQAppInfo 类实现. 实例代码 在 WJQAppInfo.h 中添加一个向外公开的接口,其返回处理好的模型数组,方法定义如下: + (NSArray *)appInfoArray; 实现代码如下: 1 //WJQAppInfo.m.将数据处理部分搬到模型类中进行处理 2 + (NSArray *)app

iOS开发——UI篇&amp;九宫格算法

九宫格算法 关于iOS开发中九宫格的实现虽然使用不多,而且后面会有更好的方实现,但是作为一个程序员必需要知道的就是九宫格算法的实现. 一:实现思路: (1)明确每一块用得是什么view (2)明确每个view之间的父子关系,每个视图都只有一个父视图,拥有很多的子视图. (3)可以先尝试逐个的添加格子,最后考虑使用for循环,完成所有uiview的创建 (4)加载app数据,根据数据长度创建对应个数的格子 (5)添加格子内部的子控件 (6)给内部的子控件装配数据 二:算法的实现 1 /* 2 *

iOS开发系列-九宫格算法-xib

给大家演示 应用程序下载 小项目,效果图:涉及知识点:懒加载,九宫格算法,字典转模型,自定义UIView ,xib文件的使用 首先把素材拖到Xcode项目中:简单看一下素材文件 此时大家应该首先关注.plist后缀的文件,里面存放的是我们用的数据,接下来看一下plist文件里面的数据 从这里面可以看到有12个应用程序下载,也就是12个UIView控件, 接下来,我们就加载这个plist文件,使用里面的数据.首先不是把plist文件拖拽到Xcode中就会自动使用的,而是加载plist文件,才能使用

iOS UI基础-1.0加法计算器

1.打开Xcode,新建一个项目 2.Single View Application是最适合初学者的模板 3.填写该应用相关信息 4.搭建UI界面 项目创建完毕后,自动帮我们做了很多配置,也自动生成了很多文件 还自动添加了开发所依赖的框架 项目中这么多文件,哪些是影响着UI界面的呢?在iOS5之前,苹果使用xib文件来描述UI界面,在iOS5之后,苹果采取了更加强大和先进的storyboard文件来描述界面(Xcode5是基于iOS7的)因此,可以得出结论:修改项目中的Main.storyboa

iOS UI基础-9.0 UITableView基础

在iOS中,要实现表格数据展示,最常用的做法就是使用UITableView.UITableView继承自UIScrollView,因此支持垂直滚动,而且性能极佳. UITableView有两种样式: 一列显示:UITableViewStylePlain 分组显示:UITableViewStyleGrouped tableView展示数据的过程 1.调用数据源的下面方法得知一共有多少组数据 - (NSInteger)numberOfSectionsInTableView:(UITableView

iOS UI基础-17.0 UILable之NSMutableAttributedString

在iOS开发中,常常会有一段文字显示不同的颜色和字体,或者给某几个文字加删除线或下划线的需求.之前在网上找了一些资料,有的是重绘UILabel的textLayer,有的是用html5实现的,都比较麻烦,而且很多UILabel的属性也不起作用了,效果都不理想.后来了解到NSMuttableAttstring(带属性的字符串),上面的一些需求都可以很简便的实现. NSMuttableAttstring 方法 为某一范围内文字设置多个属性 - (void)setAttributes:(NSDictio

IOS UI基础04

动画 1.头尾式动画 动画开始 [UIView beginAnimations:nil context:nil]; 设置动画时间 [UIView s ! etAnimationDuration:3]; [UIView setAnimationDelegate:self]; 只要写在开始和结束之间的代码, 就会被执行动画 但是: 并不是所有的代码都能够执行动画 只有属性声明中说明了是animatable的属性,才可以执行UIView动画 CGRect tempFrame2 = self.hudLa