一、自定義控件
//
// 文 件 名: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
//
// 文 件 名: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;