zoukankan      html  css  js  c++  java
  • UI控件tag属性和魔法数字的处理

    说明:tag属性有很大的用处,它就好像每个UI控件的id,当多个按钮指向同一个监听方法时,可以给方法带参数UIButton,然后根据不同的tag值

    来判断执行哪个按钮的监听事件;

    - (IBAction)up:(UIButton *)sender // 该方法有四个btn指向,tag值是下边的,即可根据不同tag值执行相应的代码
    {
        //upMoveTag的tag是10
        //bottomMoveTag:11
        //leftMoveTag:12
        //rightMoveTag:13
        
        
        CGRect rect =  self.targetView.frame;
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:1.0];
        switch (sender.tag) {
            case 10:
                rect.origin.y -= Delat;
                break;
            case 11:
                rect.origin.y += Delat;
                break;
            case 12:
                rect.origin.x -= Delat;
                break;
            case 13:
                rect.origin.x += Delat;
                break;
                
        }
        
        self.targetView.frame = rect;
      
        [UIView commitAnimations];
        
    }

    魔法数字:上述代码中的tag值10,11,12,13没什么实际意义,只是用来区分不同的button的,直接写死,很不方便其他的程序员阅读;

      解决办法,将这四个值写成一个枚举

    // 枚举代替魔法数字,提高代码的可读性
    typedef enum{
        
        upMoveTag = 10,
        bottomMoveTag,
        leftMoveTag,
        rightMoveTag,
        
    } moveDirec;
    
    // 监听事件中的代码的tag值就不用写死了,还提高可读性
    CGRect rect =  self.targetView.frame;
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:1.0];
        switch (sender.tag) {
            case upMoveTag:
                rect.origin.y -= Delat;
                break;
            case bottomMoveTag:
                rect.origin.y += Delat;
                break;
            case leftMoveTag:
                rect.origin.x -= Delat;
                break;
            case rightMoveTag:
                rect.origin.x += Delat;
                break;
                
        }
  • 相关阅读:
    有一天,我们能这样相爱吗?
    端午节来源六说
    一个ini类代替缓存使用
    创意生活可爱香皂
    漂亮的韩国发饰
    Oracle中PL/SQL单行函数和组函数详解
    真正爱你的女人是这样的
    执子之手,与子偕老。你同意么?
    男人如茶
    Oracle SQL 內置函數大全
  • 原文地址:https://www.cnblogs.com/cxbblog/p/3742113.html
Copyright © 2011-2022 走看看