• View的封装


    自定义View

    • 通常当一个view内部的子控件比较多,我们一般会考虑自定义一个view,在它的内部将子控件的创建屏蔽起来,这样外界就不用关心具体如何实现,只要导入这个类的.h文件使用就好了

    • 注意一个控件有2种创建方式:

    • 通过代码创建:

      • 初始化时一定会调用initWithFrame:方法
    • 通过xibstoryboard创建:

      • 初始化时不会调用initWithFrame:方法,只会调用initWithCoder:方法
      • 并且在初始化完毕后会调用awakeFromNib方法
    • 在initWithFrame:方法中添加子控件

    // 1.初始化子控件
    -(instancetype)initWithFrame:(CGRect)frame//通过代码创建View时,init会默认调用initWithFrame方法
    {
        if (self = [super initWithFrame:frame]) {
            // 1.初始化一个UIImageView对象
            UIImageView *iconView = [[UIImageView alloc] init];
            [self addSubview:iconView];
            self.iconView = iconView;
            // 2.初始化一个UIlabel对象
            UILabel *titleLabel = [[UILabel alloc] init];
            titleLabel.textAlignment = NSTextAlignmentCenter;
            [self addSubview:titleLabel];
            self.titleLabel = titleLabel;
        }return self;
    }
    
    • 在layoutSubviews方法中设置子控件的frame(一定要调用super的layoutSubviews)
    //2.调整子控件的位置和尺寸
    -(void)layoutSubviews
    {
        // 1.调用父类的layoutSubviews(重要)
        [super layoutSubviews];
        // 2.取出当前控件的宽度和高度
        CGFloat width = self.frame.size.width;
        CGFloat height = self.frame.size.height;
        // 3.调整子控件的位置和尺寸
        // 3.1.调整iconView的位置和尺寸
        self.iconView.frame = CGRectMake(0, 0, width, width);
        // 3.2.调整titleLabel的位置和尺寸
        self.titleLabel.frame = CGRectMake(0, width, width, height - width);
    }
    
  • 相关阅读:
    burpsuite抓包-手机端配置
    一个登录页面的测试用例(借鉴他人的,方便查阅)
    ant+jmeter环境搭建
    ant+jmeter(build.xml)亲自试用
    linux监控工具vmstat命令详解(转)
    httpRunner使用小结
    接口自动化测试框架开发总结
    Linux上如何设置nginx开机启动
    如何在Linux Centos上部署配置FastDFS
    Redis的Jedis操作(五)
  • 原文地址:https://www.cnblogs.com/ShaRuru/p/5027721.html
Copyright © 2020-2023  润新知