zoukankan      html  css  js  c++  java
  • 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);
    }
    
  • 相关阅读:
    MTGA天梯利用Ummored Ego进行针对核心卡列表
    三日狂欢_THDN_简介
    Unity_Dungeonize 随机生成迷宫
    Match3 Module For Game(THDN)
    UNITY->(width*height)style Inventory
    Mysql基本配置以及常见问题
    C++||变量
    c++||OOP
    c++||template
    实用的js函数
  • 原文地址:https://www.cnblogs.com/ShaRuru/p/5027721.html
Copyright © 2011-2022 走看看