通讯录列表展示 UIView和tobar工具条使用

 1 //
 2 //  ViewController.h
 3 //  08-通讯录
 4 //
 5 //  Created by zjj on 15/5/10.
 6 //  Copyright (c) 2015年 zjj. All rights reserved.
 7 //
 8
 9 #import <UIKit/UIKit.h>
10
11 @interface ViewController : UIViewController
12 - (IBAction)add:(UIBarButtonItem *)sender;
13 - (IBAction)remove:(UIBarButtonItem *)sender;
14 @property (strong, nonatomic) IBOutlet UIBarButtonItem *removes;
15
16 @end
  1 //
  2 //  ViewController.m
  3 //  08-通讯录
  4 //
  5 //  Created by zjj on 15/5/10.
  6 //  Copyright (c) 2015年 zjj. All rights reserved.
  7 //
  8
  9 #import "ViewController.h"
 10 #define kDuation 0.5
 11 #define kRowH 50
 12 #define kNameTag 10
 13 //类扩展 (class extension 匿名分类)用于扩展 内部可以声明本类全局引用私有变量
 14 @interface ViewController ()
 15 {
 16     CGFloat _rowY ;
 17     NSArray *_allNames; // 苹果官方规则成员变量必须以下划线开头
 18 }
 19 @end
 20
 21 @implementation ViewController
 22 #pragma mark 控制器的view加载完毕的时候调用一次
 23 - (void)viewDidLoad
 24 {
 25     [super viewDidLoad];
 26     _allNames = @[@"加菲猫吃饭",@"加菲猫打瞌睡",@"加菲猫喝茶",@"加菲猫乘地铁",@"加菲猫敲代码",@"加菲猫打电话",@"加菲猫听音乐",@"加菲猫起床",@"加菲猫奶孩子"];
 27
 28 }
 29 #pragma mark 添加一行
 30 - (IBAction)add:(UIBarButtonItem *)sender {
 31     // 0取出最后一个子控件
 32     UIView *lastView = [self.view.subviews lastObject];
 33     // 这行的Y =  最后一个控件的Y值+控件的高度+间距
 34     _rowY = lastView.frame.origin.y + lastView.frame.size.height + 5;
 35     // 创建一行
 36     UIView *rowView = [self createRowline];
 37     // 添加一行到控制器view中
 38     [self.view addSubview:rowView ];
 39     _removes.enabled = YES;// 启用删除
 40     // 设置动画开始前的控件属性
 41     rowView.frame = CGRectMake(375, _rowY, 375, 50);
 42     rowView.alpha = 0;// 设置透明度
 43     // 执行动画
 44     [UIView animateWithDuration:kDuation animations:^{
 45         // 改变控件属性
 46         rowView.frame = CGRectMake(0, _rowY, 375, 50);
 47         rowView.alpha = 1;
 48     }];
 49 }
 50 #pragma mark 创建一行 添加头像和文字
 51 - (UIView *)createRowline
 52 {
 53     // 1.添加父控件
 54     UIView *rowView = [[UIView alloc]init];
 55     rowView.frame = CGRectMake(0, _rowY, 375, 50);
 56     rowView.backgroundColor  = [UIColor whiteColor];
 57     // 2.添加文字
 58     UILabel *name = [[UILabel alloc]init];
 59     name.frame = CGRectMake(0, 0, self.view.frame.size.width, kRowH);
 60     name.text = _allNames[arc4random_uniform((int)_allNames.count)];
 61     name.textAlignment = UITextAlignmentCenter;
 62     name.backgroundColor = [UIColor clearColor];
 63     name.tag = kNameTag;
 64     [rowView addSubview:name];
 65     // 3.添加头像 创建子控件 添加到父控件行中
 66     UIButton *icon = [UIButton buttonWithType:UIButtonTypeCustom];
 67     icon.frame = CGRectMake(20, 0, 50, kRowH);
 68     //创建随机头像
 69 //    int randomIndex = arc4random() % 9;//取0-8随机整数(老写法)
 70     int randomIndex = arc4random_uniform(9);//取0-8随机整数
 71     NSString *imgNames = [NSString stringWithFormat:@"0%d.jpg",randomIndex];
 72     UIImage *img = [UIImage imageNamed:imgNames];
 73     // 给按钮添加监听器
 74     [icon addTarget:self action:@selector(iconClick:) forControlEvents:UIControlEventTouchUpInside];
 75     //保持头像宽高不变形
 76     [icon setImage:img forState:UIControlStateNormal];
 77     [rowView addSubview:icon];
 78     // 删除按钮
 79     UIButton *delete = [UIButton buttonWithType:UIButtonTypeRoundedRect];
 80     delete.frame = CGRectMake(320, 0, 60, 60);
 81     [delete setTitle:@"删除" forState:UIControlStateNormal];
 82     [delete addTarget:self action:@selector(delClick:) forControlEvents:UIControlEventTouchUpInside];
 83     [rowView addSubview:delete];
 84     return rowView;
 85 }
 86 #pragma mark 监听删除按钮点击
 87 - (void)delClick :(UIButton *)btn
 88 {
 89     [UIView animateWithDuration:kDuation animations:^{
 90         // 移动待删除行整体移动到右方
 91         CGRect  tempF = btn.superview.frame;
 92         tempF.origin.x = 375;
 93         btn.superview.frame = tempF;
 94         btn.superview.alpha = 0;
 95     } completion:^(BOOL finished) {
 96         // 1.获得即将删除这行 仔数组中的位置
 97         int startIndex = (int)[self.view.subviews indexOfObject:btn.superview];
 98         // 3.删除当前行
 99         [btn.superview removeFromSuperview];
100         [UIView animateWithDuration:kDuation animations:^{
101         // 2.遍历子控件 自动上移删除行下方子控件
102         for (int i = startIndex; i < self.view.subviews.count; i++) {
103             UIView *child = self.view.subviews[i];
104             CGRect tempF = child.frame;
105             tempF.origin.y -= kRowH + 1;// 添加时候是每行+1
106             child.frame = tempF;
107         }
108         }];
109         // 4.判断垃圾桶
110         _removes.enabled = self.view.subviews.count > 1;
111     }];
112 }
113 #pragma mark 监听头像点击
114 - (void)iconClick :(UIButton *)btn
115 {
116     // 1.取得按钮的父控件(因为lable和btn在同一父控件)
117     // 获得按钮点击行的文本标签
118     UILabel *label = (UILabel *)[btn.superview viewWithTag:10];
119 //    NSLog(@"iconClick%f",btn.superview.frame.origin.y);
120     NSLog(@"%@",label.text);
121 }
122
123 #pragma mark 删除一行
124 - (IBAction)remove:(UIBarButtonItem *)sender {
125     UIView *lastView = [self.view.subviews lastObject];
126     [UIView animateWithDuration:kDuation animations:^{
127         CGRect tempF = lastView.frame;
128         tempF.origin.x = 375;
129         lastView.frame = tempF;
130         lastView.alpha = 1;
131     } completion:^(BOOL finished) {//动画执行完毕后自动调用这个代码段
132              [lastView removeFromSuperview];
133         // 剩下子控件个数大于1才能点击删除 c语言写法
134         _removes.enabled = self.view.subviews.count > 1;
135     }];
136 }
137 @end

时间: 2024-08-08 09:40:36

通讯录列表展示 UIView和tobar工具条使用的相关文章

新浪微博客户端(38)-显示键盘上的工具条

DJComposeToolbar.m #import "DJComposeToolbar.h" @implementation DJComposeToolbar - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { self.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNa

[android] 手机卫士黑名单功能(列表展示)

先把要拦截的电话号码保存到数据库中,拦截模式用个字段区分,1 电话拦截,2 短信拦截,3全部拦截 新建Activity类CallSmsSafeActivity.java 新建布局文件activity_call_sms_safe.xml 列表展示所有的黑名单手机号码 在布局文件中添加<ListView>控件,定义一个id 获取ListView对象 调用ListView对象的setAdapter()方法,参数:ListAdapter对象 定义内部类CallSmsSafeAdapter继承系统的Ba

侧栏工具条开发

我们能学到什么 1.使用Sass更好的书写CSS 2.使用RequireJS进行模块化开发,编写出方便复用的代码 3.使用CSS3实现简单的动画效果 ########################################################################################## 使用Sass编写css Sass的基础知识 将sass编译成css -- koala工具的使用 http://koala-app.com/index-zh.html 在

iOS开发项目篇—29自定义工具条

iOS开发项目篇—29自定义工具条 一.简单说明 1.实现效果: 2.实现思路: (1)尝试: 1 //添加子控件 2 -(void)setupTextView 3 { 4 //1.创建输入控件 5 YYTextView *textView=[[YYTextView alloc]init]; 6 //设置frame 7 textView.frame=self.view.bounds; 8 [self.view addSubview:textView]; 9 self.textView=textV

猫猫学iOS 之微博项目实战(12)发送微博自定义工具条代理实现点击事件

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 一:效果 二:封装好的工具条 NYComposeToolbar.h 带代理方法 #import <UIKit/UIKit.h> typedef enum { NYComposeToolbarButtonTypeCamera, // 拍照 NYComposeToolbarButtonTypePicture, // 相册 NYComposeToolbarButto

iOS开发——Swift实战篇&amp;通知之键盘的现实与隐藏(加键盘工具条)

看这篇文章之前,建议读者先了解一下通知NSNotifation的通信原理 不好描述,我先上图: 就是点击“完成”可以隐藏键盘和自己,键盘出来时他们也跟着出来,对,就是这种效果,非常常用 1,设置keyboardHeaderview和“完成”(这里的self.keyboardHeaderView设置成了self对象) 1 self.keyboardHeaderView.frame = CGRect(x: 0,y: DeviceFrame.height+StatusBarFrame.height,w

【翻译】通讯录数据的存取(一)——获取通讯录列表

通讯录数据的存取 有选择性的翻译自:https://developer.android.com/training/contacts-provider/index.html Contacts Provider是用户通信信息仓库,包含通讯录应用程序和社交网络应用程序的数据.我们可以通过直接调用ContactsResolver的方法或直接发送调用通讯录应用程序的intent来获取Contacts Provider提供的信息. 目录 通讯录数据的存取 目录 获取通讯录列表 匹配通信人姓名 定义ListV

地理配准工具条为灰色

在准备数据矢量过程中,地理配准工具可能是最先要用到的,在自定义中加载"地理配准"工具条后,发现其图层列表为灰色,不可选. 查看帮助后得知:地理配准 工具条图层列表将显示栅格图层.影像服务图层和 CAD 图层作为有效数据类型.图层必须与数据框处于同一坐标系中,或者没有定义空间参考. 我们查看数据框的空间参考与图层的空间参考,其他结果不一致. 将数据框与图层的空间参考调整成一致,即可进行地理配准.

ArcGIS教程:使用 Spatial Analyst 工具条

Spatial Analyst 工具条提供了两个交互式工具,可用于对数据进行简单的探究.选定的图层用于识别这两个工具所作用的栅格. 关于交互式 Spatial Analyst 工具 Spatial Analyst 工具条中包含两个可用的交互式工具.向 ArcMap 的内容列表中添加适当的栅格图层后,这两种工具即变为可用状态. 等值线 创建等值线 交互式工具可用于在单波段栅格上的特定位置创建单条等值线(连接等值像元的线).您可能需要标识具有相同高程.温度或大气压力的位置. 要创建等值线,请按以下步