【UIKit】联系人信息
#pragma mark - 添加一行"+" -(IBAction)addRow { // 0得到当前的最后一个子控件 UIView*lastChild= [self.view.subviews lastObject]; // 1创建新的一行(uiview) UIView *newRow=[[UIView alloc] init]; // 2创建view宽度 CGFloat viewWidth= self.view.bounds.size.width; // 控制器的view 宽度 // 3计算新的一行的y值 CGFloat newRowY=lastChild.frame.origin.y+lastChild.frame.size.height; // 创建尺寸和位置 newRow.frame=CGRectMake(0, newRowY, viewWidth, kRowHeight); // 设置背景颜色 newRow.backgroundColor=[UIColor grayColor]; // 添加新的一行到控制器的view中 [self.view addSubview:newRow]; }
让添加的行里面增加文字
/***********让添加的新的一行里面有内容子控件******/ // 1.添加名字标签 UILabel *nameView =[[UILabel alloc]init]; nameView.text=@"123414234"; // 设置center居中 nameView.center=CGPointMake(viewWidth*0.5, kRowHeight*0.5); // 设置bounds(设置宽高,不影响位置); nameView.bounds=CGRectMake(0, 0, 200, 40); // 设置文字居中 nameView.textAlignment=NSTextAlignmentCenter; // 设置背景色为父view的背景色(清楚背景色) nameView.backgroundColor=[UIColor clearColor]; // 加入 [newRow addSubview:nameView];
让添加行里面增加图片
// 2.添加图片 UIButton *iconView=[UIButton buttonWithType:UIButtonTypeCustom]; // 设置center iconView.center=CGPointMake(40, kRowHeight*0.5); // 设置宽高 iconView.bounds=CGRectMake(0, 0, 44, 44); // 设置背景图片 //随机生成图片名 int index=arc4random()%9;// 随机一个数字,然后取模后,一定是1-8的数字 // int index2=arc4random_uniform(8); // 随机生成1-8的数 // 定义一张图片是随机图片 NSString *imageName=[NSString stringWithFormat:@"%d.png",index]; // 创建一个图片 UIImage *image=[UIImage imageNamed:imageName]; // 将图片设置背景图片 [iconView setBackgroundImage:image forState:UIControlStateNormal]; [newRow addSubview:iconView];
【增加动画】给增加行添加代码动画
/*********添加动画*********/ // 设置一个newRow的初始X为屏幕的最右边 CGRect frame=newRow.frame; frame.origin.x=viewWidth; newRow.frame=frame; // 设置newRow的x为0 [UIView beginAnimations:nil context:nil]; // 设置动画时间 [UIView setAnimationDelay:.2]; frame.origin.x=0; // 这行代码才会由效果 newRow.frame=frame; [UIView commitAnimations];
【删除行】
【删除行】:需要再上面【增加行】的代码末尾中加入
// 让删除可以用 self.removeItem.enabled=YES;
用来判断垃圾桶按钮是否可以按
#pragma mark - 删除一行 -(IBAction)removeRow { // 0得到当前的最后一个子控件 UIView*lastChild= [self.view.subviews lastObject]; // 1移除最后一个子空间 [lastChild removeFromSuperview]; // 将一个对象,从父空间中移除 // 设置删除item可用不可用 self.removeItem.enabled=self.view.subviews.count>1; }
【删除行】为了增加动画,必须使用block(将上述的删除代码更新)
#pragma mark - 删除一行 -(IBAction)removeRow { // 0得到当前的最后一个子控件 UIView*lastChild= [self.view.subviews lastObject]; // 利用block执行动画 [UIView animateWithDuration:0.3 animations:^{ // 存放需要执行动画的代码 CGRect frame=lastChild.frame; frame.origin.x=self.view.bounds.size.width; // 控制器的view 宽度; lastChild.frame=frame; }completion:^(BOOL finished) { [lastChild removeFromSuperview]; // 将一个对象,从父空间中移除 // 设置删除item可用不可用 self.removeItem.enabled=self.view.subviews.count>1; }]; }