新手练习Demo-“九宫格”
来源:互联网 发布:lua 5.1 windows 编辑:程序博客网 时间:2024/06/05 07:08
本篇为新手练习demo的相关源码,实现效果为一般app商店的展示页面:
注:demo中所使用的图片素材和plist文件均为网络下载,仅供学习使用,如有雷同,纯属巧合。
话不多说,下面直接贴上源码,具体分析在注释中:
#import"ViewController.h"
@interface ViewController ()
/**
存放应用信息
*/
@property(nonatomic,strong)NSArray *apps;
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//定义总列数
int totalColumns=3;
//定义每一个小应用的尺寸
CGFloat appW=75;
CGFloat appH=80;
//x方向间距=(screen的宽度-3*应用的宽度)/4
CGFloat marginX=(self.view.frame.size.width-totalColumns*appW)/(totalColumns+1);
//Y方向间距
CGFloat marginY=15;
//根据应用的个数创建对应的框框(view)
for (int index=0; index<self.apps.count; index++) {
//添加1个存放app信息的view(小框框)
UIView *appView=[[UIViewalloc]init];
//计算小框框的位置
int totalColumns=3;
//计算行号,列号
int row=index/totalColumns;
int col=index %totalColumns;
CGFloat appX=marginX+col*(appW+marginX);
CGFloat appY=30+row*(appH+marginY);
appView.frame=CGRectMake(appX, appY, appW, appH);
//把框框添加到控制器view上
[self.viewaddSubview:appView];
//添加内部控件
//index位置对应的应用信息
NSDictionary *appInfo=self.apps[index];
//在小的view(小框框)上添加图片
UIImageView *iconView=[[UIImageViewalloc]init];
CGFloat iconW=45;
CGFloat iconH=45;
CGFloat iconX=(appW-iconW)*0.5;
CGFloat iconY=0;
iconView.frame=CGRectMake(iconX, iconY, iconW, iconH);
iconView.image=[UIImageimageNamed:appInfo[@"icon"]];
[appViewaddSubview:iconView];
//在小框框上添加文字
UILabel *nameLabel=[[UILabelalloc]init];
CGFloat nameW=appW;
CGFloat nameH=20;
CGFloat nameX=0;
CGFloat nameY=iconY+iconH;
nameLabel.frame=CGRectMake(nameX, nameY, nameW, nameH);
nameLabel.text=appInfo[@"name"];
nameLabel.font=[UIFontsystemFontOfSize:13];
nameLabel.textAlignment=NSTextAlignmentCenter;
[appViewaddSubview:nameLabel];
//在小框框添加下载按钮
UIButton *downloadBtn=[[UIButtonalloc]init];
CGFloat downloadX=12;
CGFloat downloadY=nameY+nameH;
CGFloat downloadW=appW-2*downloadX;
CGFloat downloadH=20;
downloadBtn.frame=CGRectMake(downloadX, downloadY, downloadW, downloadH);
UIImage *normalImage=[UIImageimageNamed:@"buttongreen"];
[downloadBtn setBackgroundImage:normalImageforState:UIControlStateNormal];
UIImage *highImage=[UIImageimageNamed:@"buttongreen_highlighted"];
[downloadBtn setBackgroundImage:highImageforState:UIControlStateHighlighted];
[downloadBtn setTitle:@"下载"forState:UIControlStateNormal];
//按钮也就是button内部有label和imageview所以可以调用
// downloadBtn.titleLabel.text=@"233";不安全,不知道在什么状态下显示,不推荐
//按钮设置字体
downloadBtn.titleLabel.font=[UIFontsystemFontOfSize:13];
[appViewaddSubview:downloadBtn];
}
}
-(NSArray*)apps
{
if (_apps==nil) {
//获得路径
NSString *path=[[NSBundlemainBundle]pathForResource:@"app.plist"ofType:nil];
//app.plist为数据文件,内层结构为一个大数组,分为几个字典,字典内放每一个应用的信息
_apps=[NSArrayarrayWithContentsOfFile:path];
}
return_apps;
}
- (void)didReceiveMemoryWarning {
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- 新手练习Demo-“九宫格”
- 九宫格布局练习
- c#合适新手练习的Demo案例
- Java数组练习之九宫格
- Android 九宫格解锁Demo--Android 进阶之路
- 九宫格、热修复、高德demo下载
- 九宫格练习 9*9数独游戏
- 练习二 1026 神奇的九宫格问题
- 前端小练习——九宫格布局
- 新手练习
- 练习Demo
- 练习Demo
- hiho1268 九宫(DFS练习)
- 九宫格
- 九宫格
- 九宫格
- 九宫格
- 九宫格
- 从《大话设计模式》理解到的……
- springmvc之redirect重定向
- hdu 1869 六度分离
- ViewPage第四课与Fragment合作
- 音频转换-audioconverter
- 新手练习Demo-“九宫格”
- html(五)表格与框架内容的简单梳理
- PHP学习练手(十三)
- 轮播图
- ueditor整合struts2图片无法上传问题
- hdu 2566 统计硬币 dfs 不能排除组合重复的情况 代码不完整
- org/apache/catalina/startup/Bootstrap : Unsupported major.minor version 51.0
- CSS 中 display 属性可以是那些值以及浏览器对其兼容性的总结的总结
- 【C++转】C++多态的实现及原理详细解析