【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;
    }];
}

 

posted @ 2014-04-14 10:45  太过于漂流  阅读(195)  评论(0编辑  收藏  举报