自定義控件程序運行流程

一、自定義控件

  • 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

二、自定義控件中的實際執行順序

// 01 將須要在本視圖顯示的控件在這裏添加進去
- (id)initWithFrame:(CGRect)frame;
// 02 設置模型數據
- (void)setDataItem:(CHDataItem *)dataItem;
// 03 設置本頁面各子控件的佈局
- (void)layoutSubviews;
// 04 描繪控件的層級
- (void) drawRect:(CGRect)rect;
相關文章
相關標籤/搜索