UITableView+Extension

作者: icc_tips | 来源:发表于2016-08-24 15:05 被阅读276次

    主要写的是UITableView的索引,我们知道UItableview自带的索引比较难看,所以找资料写了这个.. 废话不多说,直接上代码

    UITableView+Extension的.h部分:

    #import   <uikit/uikit.h>

    @class YWIndexView;

    @interface UITableView (Extension)

    -(UIView *)setIndexViewWithSArr:(NSArray *)titleArr;

    @end

    @interface YWIndexView : UIView

    @property(nonatomic,strong)NSMutableArray *titles;

    @end

    UITableView+Extension的.m部分:

    #import "UITableView+Extension.h"

    static  float number;

    @implementation UITableView (Extension)

    -(UIView *)setIndexViewWithSArr:(NSMutableArray *)titleArr{

    float tableViewH = self.bounds.size.height;

    float insetTop  = self.contentInset.top;

    float insetBottom = self.contentInset.bottom;

    float screenW    = [[UIScreen mainScreen] bounds].size.width;

    float indexViewH = (tableViewH - insetTop - insetBottom)*0.73;

    float indexViewY = (tableViewH - insetTop - insetBottom)*0.09 *0.5+self.frame.origin.y +insetTop;

    YWIndexView *indexView = [[YWIndexView alloc]initWithFrame:CGRectMake(screenW - 15, indexViewY, 10, indexViewH)];

    indexView.titles = titleArr;

    number = titleArr.count;

    for (int i = 0; i < titleArr.count; i++) {

    UILabel *letterLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, indexViewH/number*i,12, indexViewH/number)];

    letterLabel.font = [UIFont systemFontOfSize:12];

    letterLabel.textColor = [UIColor grayColor];

    letterLabel.text = titleArr[i];

    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(indexViewTap:)];

    [indexView addGestureRecognizer:tap];

    [indexView addSubview:letterLabel];

    }

    if (self.superview) {

    [self.superview addSubview:indexView];

    }

    else{

    return nil;

    }

    return indexView;

    }

    -(void)indexViewTap:(UITapGestureRecognizer *)tap{

    // indexView

    YWIndexView *label = (YWIndexView *)tap.view;

    float  touchY = [tap locationInView:tap.view].y;

    float index = touchY /label.bounds.size.height *(number);

    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:index+2];

    [self scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];

    }

    @end

    @implementation YWIndexView

    @end

    他的使用方法:

      主要代码部分:

    [self.view addSubview:_classifyTableVC];

    UIView *subview =  [_classifyTableVC setIndexViewWithSArr:Title];

    [self.view addSubview:subview];

    demo地址:https://github.com/1097171985/UItableView-INDEX/tree/master/测试索引

    相关文章

      网友评论

        本文标题:UITableView+Extension

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