zoukankan      html  css  js  c++  java
  • IOS中常见UI细节和常识

    1. IBAction的参数
    ========================================
    - (IBAction)left:(UIButton *)button

    1> 在OC中,绝大多数的控件监听方法的第一个参数就是控件本身
    2> 默认连线时的参数类型是id
    3> 如果要在监听方法中,方便控件的使用,可以在连线时或者连线后,修改监听方法的参数类型

    2. 修改对象的结构体成员
    ========================================
    在OC中,不允许直接修改“对象”的“结构体属性”的“成员”,但是允许修改“对象”的“结构体属性”
    即对象有个结构体属性时,不能直接修改结构体的成员,但能修改结构体

    // 下面就大致简写一下来解释
    UIButton   *btn = [[UIButton alloc] init];
    
    CGRect rect = CGRectMake(x,y,width,height);
    
    // 给btn的结构体属性赋值
       btn.frame = rect;
    
    // 不能给对象属性中的结构体的成员直接赋值
    /*
       btn.frame.orign.x = 23;  // 这样写是错误的       
       btn.frame.orgin = CGPointMake(x,y); // 同上
    */


    修改结构体属性的成员方法如下:

    1> 使用临时变量记录对象的结构体属性
    2> 修改临时变量的属性
    3> 将临时变量重新设置给对象的结构体属性

    3. 在程序开发中需要避免出现魔法数字(Magic Number):一些莫名其妙的数字,只有自己看得懂,别的程序员看不懂

     例如:

    大致简写一下:
    
    typedef enum {
        Man = 1,
        Woman
    } MySex;
    // 如下的1,2就是魔法数字,只有自己看的懂,要避免魔法数字,把1改成Man,2改成Women这样,别的程序猿就看的懂了
    switch(传一个整数值){
       case 1:
           NSLog(@"男人"); 
        break;
      case 2:
           NSLog(@"女人");   
        break;
       default:
           NSLog(@"性别不详");
       break;  
    }


    ========================================
    使用枚举类型,可以避免在程序中出现魔法数字

    1> 枚举类型实质上就是一个整数,其作用就是用来替代魔法数字
    2> 枚举类型中,指定了第一个整数之后,后面的数字会递增

    4. frame & bounds & center
    ========================================
    1> frame可以修改对象的位置和尺寸 ----------原点是自己父类左上角的点
    2> bounds可以修改对象的尺寸-------原点是自己左上角的点
    3> center可以修改对象的位置

    5. 首尾式动画
    ========================================

    // beginAnimations表示此后的代码要“参与到”动画中
    [UIView beginAnimations:nil context:nil];
    // setAnimationDuration用来指定动画持续时间
    [UIView setAnimationDuration:2.0];
    
    self.headImageView.bounds = rect;
    ......
    
    // commitAnimations,将beginAnimation之后的所有动画提交并生成动画
    [UIView commitAnimations];
    使用块(block)动画实现首尾式动画
    // 2.0代表动画执行时间
    [UIView animateWithDuration:2.0 animations:^{
                // 1. 动画变小
                self.iconView.frame = CGRectMake(85, 80, 150, 150);
                // 2. 遮罩透明,看不见了
                self.cover.alpha = 0.0f;
            }];
    [UIView beginAnimations:nil context:nil]
    [UIView setAnimationDuration:2.0];
    // 动画结束后要执行的方法 (使用代理)
        [UIView setAnimationDelegate:self]; // 让控制器成为代理,让他去调用指定方法
        [UIView setAnimationDidStopSelector:@selector(方法名)];
    [UIView commitAnimations];
    // 使用快代码实现动画结束后执行方法  1.0代表动画执行时间为1秒
    [UIView animateWithDuration:1.0 animations:^{
               要执行的动画代码
            }completion:^(BOOL finished) {
                动画执行之后要执行的代码
            }];




    6. transform属性
    ========================================
    在OC中,通过transform属性可以修改对象的平移、缩放比例和旋转角度

    常用的创建transform结构体方法分两大类

    1> 创建“基于控件初始位置”的形变
    CGAffineTransformMakeTranslation  // 平移,传的参数是平移长度,不是倍数
    CGAffineTransformMakeScale   // 伸缩,传的参数是伸缩倍数
    CGAffineTransformMakeRotation  

    2> 创建“基于transform参数”的形变
    CGAffineTransformTranslate
    CGAffineTransformScale
    CGAffineTransformRotate

    补充:
    在OC中,所有跟角度相关的数值,都是弧度值,180° = M_PI
    正数表示顺时针旋转
    负数表示逆时针旋转

    提示:由于transform属性可以基于控件的上一次的状态进行叠加形变,例如,先旋转再平移
    因此在实际动画开发中,当涉及位置、尺寸形变效果时,大多修改控件的transform属性,
    而不是frame、bounds、center

    7. 使用代码创建控件
    ========================================
    在OC开发中,Storyboard中的所有操作都可以通过代码实现,程序员一定要熟练掌握代码布局界面的能力!

    使用代码创建控件的步骤如下:

    1> 使用控件对应类创建对象
    2> 设置对象属性:framecolor extimageackgroundImage……
    3> [self.view addSubview:btn];将控件添加到视图

    设置控件监听方法的示例代码如下:
    [btn addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];

    提示:
    1> addTarget方法定义在UIControl类中,这意味着可以给所有继承自UIControl类的对象添加监听方法
    2> 监听方法的第一个参数就是对象本身
    3> 监听方法的第二个参数是监听控件的事件

    8. viewDidLoad
    ========================================
    viewDidLoad是视图加载完成后调用的方法,通常在此方法中执行视图控制器的初始化工作

    在viewDidLoad方法中,一定不要忘记调用父类的方法实现!
    [super viewDidLoad];


     

  • 相关阅读:
    如何查看一个表的块使用状况
    esp8266烧录Html文件,实现内置网页控制设备!
    python一键电影搜索与下载
    基于 Vue BootStrap的迷你Chrome插件
    SpringBoot之自定义验证码
    iOS 图片部分模糊,类似于美图秀秀
    python实现的电影票房数据可视化
    坦克大战-C语言-详注版
    微信小程序-自定义底部导航
    微信小程序--搜索关键词高亮
  • 原文地址:https://www.cnblogs.com/Fc-ios/p/3751843.html
Copyright © 2011-2022 走看看