UIVIewHeadFootorView 重用

作者: 司马捷 | 来源:发表于2016-03-24 11:37 被阅读234次

1.自定义一个UITableViewHeaderFooterView 子类:ERReadHeaderFooterView
效果如下:


D8297087-1D0E-4615-A526-BE0BF7B8A602.PNG

2.添加内部属性

@interface ERReadHeaderFooterView ()

@property(nonatomic,weak)UIView *bootomLineView;
@property(nonatomic,weak)UIImageView *indictorView;
@property(nonatomic,weak)UILabel *titleLabel;
@end

3.实现Impemention 重写-(instancetype)initWithFrame:(CGRect)frame,
注意:使用下面方法进行初始化在iphone6之前都会调用-(instancetype)initWithFrame:(CGRect)frame{}方法

headView = [[ERReadHeaderFooterView alloc]initWithReuseIdentifier:headViewId];

最后建议重写

-(instancetype)initWithReuseIdentifier:(NSString *)reuseIdentifier{

self = [super initWithReuseIdentifier:reuseIdentifier];
if (self) {
    
   [self setupSubView];
    self.frame = CGRectMake(0, 0, KSrceenWidth, KERReadHeaderFooterViewH);
}

return self;

}

这个方法在iphone6之后就没有被调了.

-(instancetype)initWithFrame:(CGRect)frame{

self = [super initWithFrame:frame];

if (self) {
    [self setupSubView];
    self.frame = CGRectMake(0, 0, KSrceenWidth, KERReadHeaderFooterViewH);
}
return self;
}

-(void)setupSubView{
UIView *bootomLineView = [[UIView alloc]init];
bootomLineView.backgroundColor = [UIColor blackColor];
bootomLineView.alpha = 0.2;
[self.contentView addSubview:bootomLineView];
self.bootomLineView = bootomLineView;


UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"me_more"]];
[self.contentView addSubview:imageView];
self.indictorView = imageView;
UILabel *titleLabel = [[UILabel alloc]init];

[self.contentView addSubview:titleLabel];
_titleLabel = titleLabel;

}

4.重写LayoutSubview方法
重写layoutSubview的时候,注意self的frame.
对于什么时候调用LayoutSubviews,要注意相关链接:
http://blog.csdn.net/meegomeego/article/details/39890385

-(void)layoutSubviews{

[super layoutSubviews];
CGFloat lineH = 0.5;
CGFloat lineW = self.width;
self.bootomLineView.frame = CGRectMake(15, self.height-lineH, lineW, lineH);

 //  CGFloat indorH = 20;
CGFloat indorW = 20;
CGFloat indorTop = 11;
self.indictorView.right = KSrceenWidth -10;
self.indictorView.top = indorTop;
self.indictorView.size = CGSizeMake(indorW, self.height-2*indorTop);

CGFloat textW = 200;
CGFloat textH = 20;
self.titleLabel.frame = CGRectMake(0, 0, textW, textH);

}

5.在ViewController中使用 需要提前注册

[self.tableView registerClass:[ERReadHeaderFooterView class] forHeaderFooterViewReuseIdentifier:headViewId];

开始调用

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
//UITableViewHeaderFooterView
//  return nil
ERReadHeaderFooterView *headView = [tableView dequeueReusableHeaderFooterViewWithIdentifier:headViewId];

if (headView == nil) {
    
    headView = [[ERReadHeaderFooterView alloc]initWithReuseIdentifier:headViewId];
}
return headView;

}

相关文章

  • UIVIewHeadFootorView 重用

    1.自定义一个UITableViewHeaderFooterView 子类:ERReadHeaderFooterV...

  • 重用与重用

    被领导重用,也未必是好事。一般来讲,被重用分两种,一种是领导重用你的同时,给你提供很多学习、晋升的机会,给...

  • 啥是框架和设计模式

      框架通常是代码重用,而设计模式是设计重用,架构则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。软...

  • 第一篇:Objective-C 知识回顾的UI视图部分之一

    1.1.UITableView 重用机制 核心知识点 1 -- 重用池 模拟 UITableView 的重用机制,...

  • 选择器class和id的区别

    最大的区别就是class可以重用,id不能重用。

  • Cell的重用

    UITableViewCell重用机制 1.cell使用重用的原因和重用机制的原理: 原因: 一个UITableV...

  • 关于tableview和collectionview的cell重

    要解决cell重用错乱的问题首先要了解重用的机制是什么,重用简单明了的来讲就是: 注册了cell后,使用了重用机制...

  • iOS的重用机制了解

    睡不着起来写一个小文章。。。之前一直说重用重用,但是只知道怎么调用系统的API实现重用功能,但是当有人问重用机制到...

  • iOS面试题 - 横扫千军之战胜篇

    1.谈谈 tableview 的重用机制。 为什么要“重用”?iPhone 重用机制是为了实现大量数据显示而采用的...

  • iOS 一些比较重要的知识点

    一.UITableView的Cell重用机制 1.传统重用机制 2.注册机制的重用 从iOS 6.0开始,添加了缓...

网友评论

    本文标题:UIVIewHeadFootorView 重用

    本文链接:https://www.haomeiwen.com/subject/nmdrlttx.html