//

//  ViewController.m

//  01-应用管理

//  Created by apple on 17-5-14.

//  Copyright (c) 2017年  All rights reserved.

//

#import "ViewController.h"

@interface ViewController ()

@property(nonatomic,strong)NSArray *apps;

@end

@implementation ViewController

- (NSArray *)apps{

if (_apps == nil) {

//        1.获取plis文件的路径

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

//        2.读取文件

_apps =  [NSArray arrayWithContentsOfFile:path];

}

return  _apps;

}

- (void)viewDidLoad {

[super viewDidLoad];

//    1.设置frame的相关属性

CGFloat appViewW = 100;

CGFloat appViewH = 120;

CGFloat spaceX = 20;

CGFloat spaceY = 30;

CGFloat topMargin = 30;

CGFloat leftMargin = ( self.view.frame.size.width - 3 * appViewW - 2 *spaceX) *0.5;

//    2.创建格子

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

//        2.1创建一个格子视图

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

int row = i /3;//行号

int col = i % 3;//列号

CGFloat appViewX = leftMargin + (appViewW + spaceX)*col;

CGFloat appViewY = topMargin + (appViewH + spaceY )*row;

//        2.2设置frame

appView.frame = CGRectMake(appViewX, appViewY, appViewW, appViewH);

//        2.3添加

[self.view addSubview:appView];

//        appView.backgroundColor = [UIColor redColor];//设置背景色

NSDictionary *dict = self.apps[i];

//        2.4添加图片

UIImageView *head = [[UIImageView alloc]init];

CGFloat headW = 60;

CGFloat headX = (appViewW - headW) *0.5;

CGFloat headY = 0;

CGFloat headH = 60;

head.image = [UIImage imageNamed:dict[@"icon"]];

head.frame = CGRectMake(headX, headY, headW, headH);

[appView addSubview:head];

//        head.backgroundColor = [UIColor blueColor];

//        2.5添加label

//         2.5.1 创建一个文本标签

UILabel *nameLabel = [[UILabel alloc]init];

CGFloat nameLabelX = 0;

CGFloat nameLabelY = headY + headH;

CGFloat nameLabelW = appViewW;

CGFloat nameLabelH = 30;

nameLabel.frame = CGRectMake(nameLabelX, nameLabelY, nameLabelW, nameLabelH);

[appView addSubview:nameLabel];

//        nameLabel.backgroundColor = [UIColor grayColor];

nameLabel.text = dict[@"name"];

//       2.5.2设置文字大小

nameLabel.font = [UIFont systemFontOfSize:13];

//        2.5.3设置文字居中

nameLabel.textAlignment = NSTextAlignmentCenter;

//        2.6添加button

UIButton *downLoadBtn = [[UIButton alloc]init];

CGFloat downLoadBtnX = 10;

CGFloat downLoadBtnY = nameLabelY + nameLabelH + 10;

CGFloat downLoadBtnW = appViewW - downLoadBtnX *2;

CGFloat downLoadBtnH = 30;

downLoadBtn.frame = CGRectMake(downLoadBtnX, downLoadBtnY, downLoadBtnW, downLoadBtnH);

[appView addSubview:downLoadBtn];

//        downLoadBtn.backgroundColor = [UIColor greenColor];//设置背景色

[downLoadBtn setTitle:@"下载" forState:UIControlStateNormal];//设置文字

[downLoadBtn setBackgroundImage:[UIImage imageNamed:@"buttongreen"] forState:UIControlStateNormal];

[downLoadBtn setBackgroundImage: [UIImage imageNamed:@"buttongreen_highlighted"] forState:UIControlStateHighlighted];

//        downLoadBtn.

//        按钮内部至少有两个控件,一个label,一个imageView,

downLoadBtn.titleLabel.font = [UIFont systemFontOfSize:14];

}

}

@end

iOS应用管理(优化)的更多相关文章

  1. iOS项目分析及优化

    iOS项目分析及优化  来源:吴白的简书   从代码看一个程序员的笔力 从代码的整洁度上就可以看出一个程序员的实力,规范其实就是让你养成一种良好习惯的标杆,在此面前我们应该顺从.本篇我们以OC为例,统 ...

  2. iOS程序性能优化

    iOS程序性能优化 一.初级 使用ARC进行内存管理 在iOS5发布的ARC,它解决了最常见的内存泄露问题.但是值得注意的是,ARC并不能避免所有的内存泄露.使用ARC之后,工程中可能还会有内存泄露, ...

  3. iOS内存管理 ARC与MRC

    想驾驭一门语言,首先要掌握它的内存管理特性.iOS开发经历了MRC到ARC的过程,下面就记录一下本人对iOS内存管理方面的一些理解. 说到iOS开发,肯定离不开objective-c语言(以下简称OC ...

  4. iOS 程序性能优化

    前言 转载自:http://www.samirchen.com/ios-performance-optimization/ 程序性能优化不应该是一件放在功能完成之后的事,对性能的概念应该从我们一开始写 ...

  5. iOS内存管理(objective-c)

    移动app开发中,由于移动设备内存的限制,内存管理是一个非常重要的话题.objective-c的内存管理,不仅是面试当中老生常谈的一个必问话题,也是日常项目开发中,特别需要重视的环节.对于笔者这种以j ...

  6. 【iOS Instrument性能优化集】

    iOS Instrument性能优化集 1.UIImage缓存取舍 在项目代码中看到大量使用如下代码: UIImage使用 在Main Thread中发现不同动画场景中Image IO 开销和耗时所占 ...

  7. iOS内存管理

    iOS内存管理的方式是引用计数机制.分为MRC(人式引用计数)和ARC(自动引用计数). 为什么要学习内存管理? 内存管理方式是引用计数机制,通过控制对象的引用计数来实现操作对象的功能.一个对象的生命 ...

  8. 【Bugly干货分享】iOS内存管理:从MRC到ARC实践

    Bugly 技术干货系列内容主要涉及移动开发方向,是由Bugly邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明出处. 对于iOS程序员来说,内存管理是入门的 ...

  9. iOS内存管理个人总结

    一.变量,本质代表一段可以操作的内存,她使用方式无非就是内存符号化+数据类型 1.保存变量有三个区域: 1>静态存储区 2>stack 3>heap 2.变量又根据声明的位置有两种称 ...

随机推荐

  1. Struts1与Struts2的那些事

    一.概述 Struts1以ActionServlet作为核心控制器,由ActionServlet负责拦截用户的全部请求.Struts1框架有3个重要组成部分:Action.ActionForm和Act ...

  2. Oracle的关于小数的使用

    整理了部分Oracle的关于小数的使用方法,如下 --round(x,[y]) 舍入到小数点右边y位的x值 ) from dual; --1.235 --trunc(x,[y])返回截尾到y位小数的x ...

  3. Silverlight for Windows Phone开发系列课程

    Silverlight for Windows Phone开发系列课程(1):Windows Phone平台概况         课程简介:本节开始介绍系列课程的概况,包括课程内容,先决条件,学习目的 ...

  4. JavaScript 消息框,警告框,确认框,提示框

    1.警告框 警告框经常用于确保用户可以得到某些信息. 当警告框出现后,用户需要点击确定按钮才能继续进行操作. 语法: alert("文本") 2.确认框 确认框用于使用户可以验证或 ...

  5. SIGTERM等信号含义【转】

    主要是做sigterm 和sigkill区别的比较,之前的好多操作,在结束正在运行的一个程序的时候,常用kill,这个以后的注意,在sigterm不起作用的时候,再使用kill; 原文地址:http: ...

  6. springboot(六):如何优雅的使用mybatis

    这两天启动了一个新项目因为项目组成员一直都使用的是mybatis,虽然个人比较喜欢jpa这种极简的模式,但是为了项目保持统一性技术选型还是定了 mybatis.到网上找了一下关于spring boot ...

  7. linux达人养成计划学习笔记(五)—— 关机和重启命令

    一.shutdown 1.格式: shutdown [选项] 时间(now) 选项: -c: 取消前一个关机命令 -h: 关机 -r: 重启 2.程序放入后台执行: shutdown -r 时间 &a ...

  8. 关于使用coreseek并为其做分页的介绍(转)

    coreseek 做分页时找数据总量还真不好找.以为他会给一个方法(函数)什么的去获取,结果却不是.首先需要了解:num_matches: 当前返回的结果数,<= limit设置值.max_ma ...

  9. Android----Thread+Handler 线程 消息循环(转载)

    近来找了一些关于android线程间通信的资料,整理学习了一下,并制作了一个简单的例子. andriod提供了 Handler 和 Looper 来满足线程间的通信.例如一个子线程从网络上下载了一副图 ...

  10. 【Spring】SpringMVC之上传文件

    这里笔者介绍利用SpringMVC上传图片的操作. 步骤 1.  引入jar文件 不仅需要导入开发SpringMVC相关的包,还需要导入 commons-fileupload-1.2.1.jar 和  ...