【九宫格坐标排列 Objective-C语言】

这篇博客主要介绍了如何使用Objective-C编程语言实现一个九宫格布局。作者首先展示了九宫格应用的效果,解释了应用中包含的组件:图片、Label和下载按钮。然后详细讲解了数据从plist文件加载的过程,以及通过懒加载技术加载数据。接下来,讨论了如何通过创建UIView并设置其属性,以及利用循环动态创建12个视图,形成九宫格的布局。博客中还涉及到了坐标计算的逻辑,以便正确排列每个单元格的位置。最后,作者提出了计算九宫格坐标的步骤,包括计算间距、计算每个单元格的X和Y坐标,以及如何根据列数调整布局。
摘要由CSDN通过智能技术生成

一、这个九宫格案例做好之后的效果如图:

九宫格

1.这个下载是可以点击的,当你点击之后,弹出一个框,过一会儿,框框自动消失,这里变成“已安装”

2.那么,我现在先问大家一句话:大家认为在这一个应用里面,它包含几个控件,

3个,哪3个:一个是图片框,一个是Label,一个是按钮,

为什么说下面这个也是一个按钮呢,它或许也是一个图片框呢,

对,它可以点击,就说明它不是一个图片框吧,

这个下载的按钮,可以点击,所以它就不是一个图片框了,

二、下面,就把这个应用实现一下

1.先把大致结构说一下:

整体这个案例,我们把它叫做应用管理,什么叫做“应用管理”,

我们就是要安装很多手机应用,这里可以看到很多手机应用,我们点击下载,就把它下载到手机上了,

应用管理的意思就是,这里有很多手机应用,我们这里可以看到很多图片和下载按钮,点击下载,就把它下载到手机上了,

但是我们现在没有学习网络知识,我们现在只是学习UI,换句话说,我们就是把这个界面做出来,做出这个效果来,就可以了,

它并没有真正的“下载”功能,因为我们压根儿就没有实现联网功能,

后面在网络、多线程的课程里面,大家就可以去学习怎么下载,

这是后面的知识,今天我们要做的,就是把它排列出来,

首先,我们先分析一下,在这个界面上,要显示这么多应用,这些数据来源在哪里呢,

2.这个应用的数据来源是一个plist文件,

这些数据,不是我们一个一个写死的,数据是活的,

这些数据,来源于一个叫做app.plist这么一个文件,

所以我们首先,第一步,要先把数据加载起来,

第二步,根据加载好的数据,在界面上,全部显示出来,全部动态的创建这些控件,

在界面上,是全部动态的创建这些控件,

也就是说,这些控件不是说打开storyboard,一个一个拖上来的,

是我们通过代码动态生成的,

动态生成的好处就是,你数据里面有多少个应用,只要一执行,它就会根据数据,动态的生成这些应用,

首先,给大家看一下,数据在哪里,就在我们的项目根目录下,有一个app.plist文件,数据就在这个plist文件中,

其实这个就是一个xml文件,里面就是一个一个的标签,

我们双击打开看一下这个plist文件,整体是一个NSArray数组,

里面的每一个元素,又是一个什么,里面的每一个元素,又是一个字典,

第一步,把这些数据加载到我们的NSArray集合里面,

要加载这些数据,我们怎么做:

NSString *path = [[NSBundle mainBundle] pathForResource:@“”];

NSArray *array = [NSArray arrayWithContentsOfFile:path];

新建一个xcode项目,我们后面是不是要向我们的项目里面,是不是新建一些类啊,

所以,首先,我们设置一下这些类的前缀,

在Class Prefix属性里面,设置前缀,例如来一个“CZ”,

我们首先来加载数据,那么这个加载数据的代码在哪里写:

因为,我们这个项目里配置的main interface:main

也就是main.storyboard,

也就意味着:当这个项目运行的时候,它会首先,启动这个main.storyboard,

它会启动这个控制器,我们给它调整一下大小:在size里面,给个iphone 4.7 inch,

当你要启动这个控制器的时候,是不是要创建一个控制器对象啊,

创建一个控制器对象,它是创建哪个类的对象呢,

我们之前说,控制器是一个UIViewContrller,是这么一个类型吧,

然后,我们选中View Controller Scene下面的黄色的View Controller之后,在右边的属性里面,有个Customer Class,下面有一个Class属性,这里是ViewController,

是我们自己写的一个VIewController,它继承自UIViewController,

所以这个类,也是一个控制器的类,

所以,当我们启动控制器的时候,创建的是这个ViewController的对象,

既然你是创建这个类的对象,所以说,加载那些数据,是不是都要在这个类里面写代码,

我们后面大多数代码,都是在这个控制器里面写的,

3.我们第一步,做我们这个九宫格,首先,加载数据,

加载数据,我们说,是不是首先要写一个属性,用来保存这个数据吧,

#import “ViewContrller.h”

@interface ViewController ()

//保存应用的数据,我们这里是一个数组的数据,strong,

//用来保存所有应用的数据,

@property(nonatomic,strong)NSArray *apps;

@end

@implementation ViewController

- (void)viewDidLoad{

[super viewDidLoad];

}

- (void)didReceiveMemoryWarning{

[super didReceiveMemoryWarning];

}

@end

然后,我们说,加载这个数据,是在什么时候加载的,我们说是在重写这个apps属性的getter方法的时候,进行加载的,

这种加载数据的方式,我们就管他叫做什么,懒加载,

//重写apps属性的getter方法,进行懒加载数据,

//怎么重写apps属性的getter方法呢,就是写一个减号,apps,直接回车,这就是重写apps属性的getter方法,

- (NSArray *)apps{

//在重写getter方法里面,我们首先要判断,

if(_apps == nil){

//加载数据,

//1.获取app.plist文件在手机上的完整路径,

//2.根据路径加载数据

//要获取路径,我们首先要先把素材拷进来,拷到这个Supporting Files下面吧,

//找到app.plist文件,把它拷到Supporting Files下面,

//然后这些图片,也拷进来吧,我们也会用到的,注意,这个icons下面的每一张,是不是那个应用的图像,

//然后还有两张绿色的背景图,是那个下载按钮的背景图,

//因为它们都是图片文件,所以就拖到images.xcassets文件夹下面,这样的话,我们就有了这些图片素材了

//这些图片素材有了以后,紧接着,我们就开始加载数据了,

//首先加载的是app.plist,把这个文件中的数据,加载到我们的NSArray里面,

//1.第一步,获取这个plist文件在手机上的完整路径,怎么获取,记得吗

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

//这是什么意思,mainBundle是一个方法,是NSBundle的类方法,它的返回值,就是一个NSBundle,是这个应用在手机上安装之后的根目录,

//然后再这个根目录下,pathForResource:@“”,搜索,搜索什么呢,搜索一个叫app.plist的这么一个文件,因为我已经把后缀名写在这里了,所以后面我可以传一个什么,nil吧,这样的话,就拿到了这个应用的根路径

//拿到根路径之后,下面就是要加载,怎么加载,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风清晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值