自定义控件程序运行流程

1、自定义控件

  • 1.1 CHDataView.h

//
// 文 件 名:CHDataView.h
//
// 版权所有:Copyright ? 2018年 Lelight. All rights reserved.
// 创 建 者:leLight
// 创建日期:2018/8/4.
// 文档说明:
// 修 改 人:
// 修改日期:
//

#import <Foundation/Foundation.h>

@interface CHDataView : UIView

/** 数据模型 */
@property (nonatomic, strong) CHDataItem *dataItem;

@end
  • 1.2 CHDataView.m

//
// 文 件 名:CHDataView.m
//
// 版权所有:Copyright ? 2018年 Lelight. All rights reserved.
// 创 建 者:leLight
// 创建日期:2018/6/12.
// 文档说明:
// 修 改 人:
// 修改日期:
//

#import "CHDataView.h"
#import "CHDataItem.h"

@interface CHDataView ()

/** 标题按钮 */
@property (strong, nonatomic) UILabel *name;
/** 按钮 */
@property (strong, nonatomic) UIButton *button;

@end

@implementation CHDataView

#pragma mark ***************************** 视图 ***********************************************
/************ 将需要在本视图显示的控件在这里添加进去 *****************************/
- (id)initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if (self) {

        self.name = [[UILabel alloc] init];
        self.button = [[UIButton alloc] init];
    }
    return self;
}

/************ 设置模型数据 *****************************/
- (void)setDataItem:(CHDataItem *)dataItem {
    _dataItem = dataItem;

    self.name.text = dataItem.deviceName;
    [self.button setTitle:dataItem.deviceMac forState:UIControlStateNormal];;

}

/************ 设置本页面各子控件的布局 *****************************/
- (void)layoutSubviews {
    [super layoutSubviews];

    self.name.frame = CGRectMake(0, 50, 200, 50);
    self.button.frame = CGRectMake(0, 110, 200, 50);
}

/************ 头部颜色渐变 *****************************/
- (void) drawRect:(CGRect)rect{

    // 头部标题背景颜色渐变
    CAGradientLayer *headerLayer = [CAGradientLayer layer];
    headerLayer.startPoint = CGPointMake(0, 0.5); //(0,0)表示从左上角开始变化。默认值是(0.5,0.0)表示从x轴为中间,y为顶端的开始变化
    headerLayer.endPoint = CGPointMake(1, 0.5); //(1,1)表示到右下角变化结束。默认值是(0.5,1.0)  表示从x轴为中间,y为低端的结束变化
    headerLayer.colors = [NSArray arrayWithObjects:(id)[UIColor whiteColor].CGColor,(id)[UIColor yellowColor].CGColor, (id)[UIColor whiteColor].CGColor, nil];
    // layer.locations = @[@0.0f, @1.0f];//渐变颜色的区间分布,locations的数组长度和color一致,这个值一般不用管它,默认是nil,会平均分布
    headerLayer.frame = self.button.bounds;
    [self.button.layer insertSublayer:headerLayer atIndex:0];
    [self.button.layer addSublayer:headerLayer];
}

@end

2、自定义控件中的实际执行顺序

/************ 01 将需要在本视图显示的控件在这里添加进去 *****************************/
- (id)initWithFrame:(CGRect)frame;
/************ 02 设置模型数据 *****************************/
- (void)setDataItem:(CHDataItem *)dataItem;
/************ 03 设置本页面各子控件的布局 *****************************/
- (void)layoutSubviews;
/************ 04 描绘控件的层级 *****************************/
- (void) drawRect:(CGRect)rect;

原文地址:https://www.cnblogs.com/CH520/p/9419365.html

时间: 2024-08-08 10:49:25

自定义控件程序运行流程的相关文章

IOS学习笔记1—Iphone程序运行流程

Iphone程序运行流程 main.m文件,iOS应用程序的主入口 main函数的两个参数为命令行参数,在ios开发中不会用到这些元素,包括这两个参数是为了与标准ANSI C保持一致 UIApplicationMain函数: 为应用程序提供主入口点,创建新的应用程序实例和它的委托.委托负责处理应用程序状态变更,并为那些变更提供响应 启动和加载窗口后,应用程序委托退居幕后,几乎所有应用程序语义都转到UIViewController类的某个子类,应用程序委托通常不再发挥作用,除非应用程序将要结束,或

java里的分支语句--程序运行流程的分类(顺序结构,分支结构,循环结构)

JAVA里面的程序运行流程分三大类: 1,顺序结构:顺序结构就是依次执行每一行代码 2,分支结构:分支结构就是按不同的条件进行分支 3,循环结构:一段代码依条件进行循环执行. 其中,分支结构有两大类: if...else...结构和switch...结构       switch中的case支持的数据类型只有四种:    char  (字符型)    byte  (比特型)    short (短整型)    int     (整型) 注意switch里面的判断语句后面需要加break,否则的话

Python程序运行流程与垃圾回收机制

Python程序运行流程 Python解释器首先将程序将py文件编译成一个字节码对象PyCodeObject(只存在于内存中).(当这个模块的 Python 代码执行完后,就会将编译结果保存到了pyc文件中,这样下次就不用编译,直接加载到内存中.pyc文件只是PyCodeObject对象在硬盘上的表现形式.) py文件被编译后,接下来的工作就交由 Python虚拟机来执行字节码指令.Python虚拟机会从编译得到的PyCodeObject对象中依次读入每一条字节码指令,并在当前的上下文环境中执行

我的全栈之路-C语言基础之C程序运行流程

我的全栈之路-C语言基础之C程序运行流程 我的全栈之路 4.1 C程序的运行流程 C语言编写的程序一般都要经过编写源文件->预处理->编译->汇编->链接后运行这几个流程. 预处理 预处理主要是宏替换.包含头文件.条件编译以及删除注释等操作,预编译阶段生成文件的后缀名通常是.i. 编译 编译主要是将预处理好的文件生成汇编文件,编译后文件的后缀名通常是.s. 汇编 汇编主要是将汇编文件生成二进制文件,汇编后的文件的后缀名通常是.o. 链接 链接主要是将各个二进制文件.库函数.启动代码

2.4 Android程序运行流程

我们还是得给大家介绍一下Android程序是如何运行,了解它的运行流程非常重要.我们以图解的形式来描述这样子显得更加直观. 文字内容来自:国信安刘阳

MFC程序运行流程

->进入入口函数_tWinMain() 程序首先进入文件AppModul.cpp,找到_tWinMain()函数运行,调用其中的AfxWinMain()函数. 由于为了支持UNICODE,C运行库对WinMain其实区分了UNICODE版和ANSI版.对UNICODE版的程序,C运行库将调用wWinMain,而对于ANSI版的应用,则调用WinMain. MFC的代码设计时是自动支持UNICODE的,所以,MFC的WinMain在APPMODUL.CPP被定义为_tWinMain(HINSTAN

逆向第三课(深入.NET程序运行原理)

注:本文适用读者范围,对Windows下的PE文件有一定认识的朋友 一. 名词解释 a)        CLR: 公共语言运行时(Common LanguageRuntime),CLR时.NET框架的核心内容之一,可以把它看为一套标准资源,可以被任何.NET程序使用.它包括:面向对象的编程模型.安全模型.类型系统(CTS).所有.NET基类.程序执行以及代码管理等. b)        JIT: 即时编译(Just In-Time compile),这是.NET运行可执行程序的基本方式,也就是在

Spark修炼之道(高级篇)——Spark源码阅读:第一节 Spark应用程序提交流程

作者:摇摆少年梦 微信号: zhouzhihubeyond spark-submit 脚本应用程序提交流程 在运行Spar应用程序时,会将spark应用程序打包后使用spark-submit脚本提交到Spark中运行,执行提交命令如下: root@sparkmaster:/hadoopLearning/spark-1.5.0-bin-hadoop2.4/bin# ./spark-submit --master spark://sparkmaster:7077 --class SparkWordC

iOS程序启动流程(留有问题)

程序的简单运行流程: 读取Main.storyboard文件 创建箭头所指的ViewController对象 根据storyboard文件中描述创建ViewController的UIView对象 将UIView对象显示到用户眼前 从右侧库里直接拖拽UIButton/UITextField/UILabel等这些控件到storyboard里,就是在对应ViewController对象里创建了属性?