• iOS-UIButton


    一、UIButton
    1.内部结构
    1> UIButton内部默认有个UIImageView、UILabel控件,可以分别用下面属性访问:
    @property(nonatomic,readonly,retain) UIImageView *imageView;
    @property(nonatomic,readonly,retain) UILabel     *titleLabel;
    
    2> UIButton之所以能显示文字,完全是因为它内部的titleLabel
    也就是说,UIButton的setTitle:forState:方法设置的字符串就是显示到了titleLabel上
    
    3> UIButton的setImage:forState:方法设置的图片显示到了内部的imageView上
    
    4> 注意
    * 设置按钮的文字或文字颜色,必须用下面的方法
    - (void)setTitle:(NSString *)title forState:(UIControlState)state;
    - (void)setTitleColor:(UIColor *)color forState:(UIControlState)state;
    #warnning 不能直接拿到titleLabel设置文字和文字颜色,比如下面的做法是错误的:
    button.titleLabel.text = @"12323";
    button.titleLabel.textColor = [UIColor redColor];
    
    * 设置按钮内部的小图片,必须用下面的方法
    - (void)setImage:(UIImage *)image forState:(UIControlState)state;
    #warnning 不能直接拿到imageView设置图片,比如下面的做法是错误的:
    button.imageView.image = [UIImage imageNamed:@"abc.png"];
    
    2.其他设置
    1> 设置按钮的文字自动换行
    button.titleLabel.numberOfLines = 0;
    
    2> 设置按钮的文字字体
    button.titleLabel.font = [UIFont systemFontOfSize:16];
    
    3> 设置按钮周边有多少区域不显示内容(不显示里面的小图片和文字)
    // 顶部 10,左边 20,底部 10,右边 20
    button.contentEdgeInsets = UIEdgeInsetsMake(10, 20, 10, 20);
    
    二、图片拉伸
    1.iOS 5.0之前的做法
    - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight;
    
    2.iOS 5.0的做法
    - (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets;
    
    3.iOS 6.0的做法
    - (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode;
    
    三、开发规范
    1.枚举
    1> 当某个属性的值只有固定的几个取值时,应该用枚举
    2> 枚举常量名 以 “枚举类型名” 开头 或者 以 ”k + 枚举类型名“ 开头
    * 比如
    typedef enum {
        MessageTypeMe = 0, // 我发的
        MessageTypeOther = 1 // 别人发的
    } MessageType;
    * 或者
    typedef enum {
        kMessageTypeMe = 0, // 我发的
        kMessageTypeOther = 1 // 别人发的
    } MessageType;
    
    2.readonly
    如果某个属性的值只在类的内部修改赋值,外界不需要修改赋值、也不允许修改赋值,尽量加上readonly关键字
    
    四、封装思想
    1.如果有一段代码具备以下属性,应该抽到一个单独的类或者分类中:
    1> 功能性:用来实现某个独立的功能
    2> 工具性:简单易用实用
    3> 全局性:整个项目中到处都用到这个功能
    
    2.究竟这段功能代码抽到哪一个类或者分类,就看这个功能主要用到哪个类的方法API,哪个类最清楚这个功能怎么实现
    * 比如返回拉伸好图片的功能应该放在UIImage的分类中
  • 相关阅读:
    中高级PHP程序员应该掌握哪些技术
    如何在FOXMAIL添加网易邮箱
    subline text 3快捷键
    【sublime】sublime Text 3 javaScript代码自动提示插件&安装步骤 &启动Debug模式
    PHPStorm常用快捷键
    怎么样快速修改HOSTS文件?让火绒等小工具来帮忙
    windows系统 右键新建菜单添加新建php文件
    给初学编程的人的干货
    安装Adobe Dreamweaver CC时出现安装失败及解决方法
    win10系统每次打开软件都会弹出账户控制如何解决
  • 原文地址:https://www.cnblogs.com/DarbyCJ/p/3658220.html
Copyright © 2020-2023  润新知