AppManager(demo16.03.15)

//
//  ViewController.m
//  AppManager
//
//  Created by xin on 15-3-16.
//  Copyright (c) 2015年 Jackey. All rights reserved.
//

#import "ViewController.h"

//1 get the data
//2 draw the view
@interface ViewController ()

//
@property (nonatomic,strong) NSArray *appList;
@end

@implementation ViewController

-(NSArray *)appList{
    if(!_appList){
        NSString *path = [[NSBundle mainBundle]pathForResource:@"app.plist" ofType:nil];
        _appList = [[NSArray alloc]initWithContentsOfFile:path];
    }
    return _appList;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    int totalCol = 3;
    CGFloat viewW = 80;
    CGFloat viewH = 90;

    CGFloat marginX = (self.view.bounds.size.width-viewW*totalCol)/(totalCol+1);
    CGFloat marginY =10;
    CGFloat startY = 20;
    //int count = self.appList.count;
    for(int i=0;i<self.appList.count;i++){
        int row =i/totalCol;
        int col = i%totalCol;

        CGFloat x = marginX +(marginX+viewW)*col;
        CGFloat y =startY+ marginY +(marginY+viewH)*row;

        UIView *view = [[UIView alloc]initWithFrame:CGRectMake(x, y, viewW, viewH)];
        //view.backgroundColor = [UIColor redColor];
        [self.view addSubview:view];

        //image
        UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, viewW, 50)];
        //imageView.backgroundColor = [UIColor grayColor];
        UIImage *image = [UIImage imageNamed:self.appList[i][@"icon"]];
        imageView.image = image;
        //按照比例现实图像
        imageView.contentMode = UIViewContentModeScaleAspectFit;
        [view addSubview: imageView];

        //description
        UILabel *descriptionLabel = [[UILabel alloc]initWithFrame:CGRectMake(0,imageView.bounds.size.height, viewW, 20)];
        //descriptionLabel.backgroundColor = [UIColor blackColor];
        descriptionLabel.text = self.appList[i][@"name"];
        descriptionLabel.font =[UIFont systemFontOfSize:12.0];
        descriptionLabel.textAlignment = NSTextAlignmentCenter;
        [view addSubview:descriptionLabel];

        //button
        UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
        button.frame = CGRectMake(0, 70, viewW, 20);
        [button setTitle:@"下载" forState:UIControlStateNormal];
        button.titleLabel.font = [UIFont systemFontOfSize:14.0];
        //button.backgroundColor = [UIColor purpleColor];
        [button setBackgroundImage:[UIImage imageNamed:@"buttongreen"] forState:UIControlStateNormal];
        [button setBackgroundImage:[UIImage imageNamed:@"buttongreen_highlighted"] forState:UIControlStateHighlighted];
        [view addSubview:button];

    }

}

@end

添加按钮事件和动画

button.tag = i;

        [button addTarget:self action:@selector(downloadClick:) forControlEvents:UIControlEventTouchUpInside];

  

-(void)downloadClick:(UIButton *)button{
    UILabel *lable = [[UILabel alloc]initWithFrame:CGRectMake(80, 400, 160, 40)];
    lable.textAlignment = NSTextAlignmentCenter;
    lable.backgroundColor = [UIColor lightGrayColor];
    NSDictionary *dict = self.appList[button.tag];
    lable.text = [NSString stringWithFormat:@"下载%@完成",dict[@"name"]];

    lable.font = [UIFont systemFontOfSize:13.0];
    lable.alpha = 1.0;
    [self.view addSubview:lable];

    //动画效果
    //[UIView beginAnimations:nil context:nil];
    //[UIView setAnimationDuration:1.0];
    //lable.alpha = 1.0;
    //[UIView commitAnimations];

    [UIView animateWithDuration:1.0 animations:^{
        lable.alpha=0.0;
    } completion:^(BOOL finished) {
        [lable removeFromSuperview];
    }];

}

  

时间: 2024-12-20 02:07:20

AppManager(demo16.03.15)的相关文章

【谜客帝国】第148届梦中人主擂谜会(2019.03.15)

[谜客帝国]第148届梦中人主擂谜会(2019.03.15) 主持:瓷    计分:小白 1.夫人囚禁于何处(5字对景点位置咨询语)娘子关在哪 2.找你去战胜排名第二的人(外教练)索尔斯克亚 3.二月里来换新装(莫言小说<蛙>人物)王胆 4.一心除皇上,自然搭上命(科技名词)全息 5.布什更二(货币冠量)一便士 6.“身形婀娜,虽裹在一袭宽大缁衣之中,仍掩不住窈窕娉婷之态”(3字古埃及国王,卷帘格)美尼斯 [注:面为<笑傲江湖>中对仪琳的描写,美尼斯为是埃及第一王朝的开国国王] 7

九宫格布局(demo16.03.14)

// // ViewController.m // AppManager // // Created by xin on 15-3-16. // Copyright (c) 2015年 Jackey. All rights reserved. // #import "ViewController.h" //1 get the data //2 draw the view @interface ViewController () // @property (nonatomic,stron

湖南多校对抗赛(2015.03.15)9题题解 ABCEFGHJK

比赛链接:点击打开链接 A:点击打开链接 题意: 问n的排列中多少个不满足 for(int i = 1; i <= n; i++) a[a[i]] == a[i]; 显然有 n!-1 所以输出 (n!-1)%mod; #include <iostream> #include <cstdio> #include <algorithm> #include <string> #include <cmath> #include <cstrin

深入浅出WPF--笔记(2015.03.15)

附加属性说一个属性本来不属于某个对象,但由于某种需要而被后来附加上.也就是把对象放入一个特定环境后对象才具有的属性(表现出来就是被环境赋予的属性)就称为附加属性(Attached Property). 附加属性的作用就是将属性与数据类型(宿主)解耦,让数据类型的设计更加灵活.附加属性的本质就是依赖属性(snippet: propa).注册附加属性使用的是名为RegisterAttached的方法,且附加属性使用两个方法分别包装. XAML: <StackPanel Background="

周记 2015.03.15

1. quartz 定时任务执行时,如果某一定时任务阻塞了,那么下次到该定时任务执行时,会新打开一个线程执行.如果所有线程都被占用,则定时任务会停止. 2. 如果代码出了问题,在所有可疑的地方加上日志记录,再测试,争取一次找到问题. 3. JAVA代码中数据库字段一般设置为常量形式,多处使用防止写错误. 4. 以用户aceway跳转到另外一台服务器:[email protected] 5. 若一个linux用户(假设为aceway)没有上传文件的权限,root用户可以新建一个目录,赋予它所有人的

TomCat(demo15.03.15)

// // ViewController.m // TomCat // // Created by xin on 15-3-15. // Copyright (c) 2015年 Jackey. All rights reserved. // #import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UIImageView *tom; @end @impleme

2018/03/15 每日一个Linux命令 之 mv

Linux mv命令用来为文件或目录改名.或将文件或目录移入其它位置. mv [参数] [要移动/更名的文件] [移动路径/要更改名字] 平常用的很多了,这里就不多讲解了,只介绍两个重要参数就好了 -i: 若指定目录已有同名文件,则先询问是否覆盖旧文件; -f: 在mv操作要覆盖某已有的目标文件时不给任何指示; 如果不加参数 直接使用mv 默认是不询问直接覆盖的 如果你不知道这个文件夹之前有没有同名文件,最好移动前使用 -i 看一下,或者其他方法. 原文地址:https://www.cnblog

AJPFX平台:03.15日内交易策略

AJPFX恒指: 早盘恒指开盘后迅速拉升,价格目前已经突破29000关口,日内大概率会继续拉升.1小时周期布林带开口发散,下方MACD指标已经进入强势的上涨周期,均预示着至少在日内看来,恒指还具备一定的上涨空间,上方目标位29200,下方短线支撑位28500.日内建议,顺势做多. 恒指1小时K线图 AJPFX外汇(黄金,原油): 美指在昨日(周四)日内中级别拉升,价格最高至96.80附近,虽然出现了一定级别的上涨,但是短线整体的下行趋势仍然确立,日内建议谨慎看跌. 由于今天是周五,提防晚间所有交

15.文件系统——软RAID的实现(二)(mdadm,watch, RAID1)

前文介绍了使用mdadm命令穿件软RAID0的过程,本章将继续演示RAID1和RAID5的创建过程. 在演示具体的创建过程之前,需要进一步介绍madam命令可用的选项: -f:把某设备指定为模拟损坏 -r:把损坏的设备移除 -a:新增一个设备到阵列中 一.创建一个大小为1G的RAID1: 对RAID1来说,其利用率只有50%,故要使RAID1的有效空间为1G,就需要两个1G的分区,其创建过程如下: [[email protected] backup]# fdisk/dev/sdc WARNING