IOS动态创建控件通过tag处理单击事件

1.在开发中,我们很多时候需要动态创建控件.在创建控件的时候给控件设置一个tag值,利用这个tag值来操作控件.
2.创建控件一般要设置控件的大小和位置,这两个属性是最重要的.最后利用addSubview:方法将控件添加到指定的容器即可.
3.通过tag获取控件然后操作控件的属性等,我们可以遍历父控件,通过tag找到指定的控件.
4.给按钮添加单击事件要利用addTarget:(id) action:(sel) forControlEvents:UIControlEvents)方法,这个方法有3个参数,第一个是参数是id,即要调用方法的那个控件;第二个参数是sel,即要执行的方法,因为是SEL类型,所以要利用@selector(方法名);第三个参数是给该控件添加的事件,如UIControlEventTouchUpInside单击事件.

以下是实操代码

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    /**
     *  创建一个UILabel控件并设置UILabel的属性
     */
    UILabel *label1 = [[UILabel alloc]init];
    label1.frame = CGRectMake(100, 100, 100, 60);
    label1.text = @"hello man!";
    label1.backgroundColor = [UIColor redColor];
    label1.textColor = [UIColor yellowColor];
    label1.textAlignment = NSTextAlignmentCenter;
    label1.tag =1;
    //添加UILabel到view上
    [self.view addSubview:label1];

    /**
     *  创建一个UIButton控件,并设置button的属性
     */
    UIButton *btn = [[UIButton alloc]init];
    btn.frame = CGRectMake(180, 180, 100, 100);
    btn.backgroundColor = [UIColor blueColor];
    btn.tag = 2;
    [btn setTitle:@"修改" forState:UIControlStateNormal];
    [btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
    //添加UIButton到view上
    [self.view addSubview:btn];
    //动态给UIButton添加事件
    [btn addTarget:self action:@selector(action:) forControlEvents:UIControlEventTouchUpInside];

}
//定义一个事件action
- (IBAction)action:(UIButton *)sender{

    //根据tag的值确定点击的是哪个按钮,然后修改按钮的内容和字体颜色
    if (sender.tag ==2) {
        [sender setTitle:@"点我干啥!" forState:UIControlStateNormal];
        [sender setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
    }

    //遍历view的所有控件,通过tag找到UILabel修改UILabel的位置
    for (UIView *lb1 in self.view.subviews) {
        if (lb1.tag == 1) {
            //新建一个CGRect保存lb1的frame,通过修改CGRect的origin然后将新的\
            坐标赋值给lb1达到修改坐标的目的
           CGRect frame1 =lb1.frame;
            frame1.origin.x = 80;
            frame1.origin.y = 80;
            lb1.frame = frame1;
        }
    }

}


@end
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值