Latest 1.3.1
Homepage https://github.com/shaohuihu/HSSetTableViewController
License MIT
Platforms ios 8.0, requires ARC
Dependencies SDWebImage
Frameworks UIKit
Authors

最好用的设置界面和个人信息框架,上至分割线,下到箭头,标题,详细标题,富文本标题等等统统可配置,可更新,你无须判断indexPath.row。也无须纠结如何更新cell,HSSetTableViewController一行代码帮你搞定!100%App都能用到!!目前版本已经升级到1.3.1版本,你的UIViewController只需要导入HSSetTableViewController即可。目前支持继承和分类两种实现方式,强烈建议使用分类!

本库由来背景:

  • 采用model作为封装列表的想法并不稀奇,只是看过的太简单封装,并没有深度挖掘,无法扩展和自定义。
  • 个人项目接触到类似界面比较多,并且都不是简单的几个点击事件能处理,传统做法太low,一次封装长期受用。

    特色

  • [x] 支持设置滑动列表位置约束,AutoLayout,横屏竖屏均适配(相对于父视图)
  • [x] 支持设置header和footer模型
  • [x] 支持最基本cell(左边标题,右边箭头)
  • [x] 支持右边文本cell(左边标题,右边文本,文本属性可配置,高度内部自适应)
  • [x] 支持开关cell(左边标题,右边switch)
  • [x] 支持图片cell(左边标题,右边图片)
  • [x] 支持cell点击和自定义cell和以及cell事件(建议使用block交互)
  • [x] 支持每个cell动态更新(如果自定义含有textField,注意失去焦点问题,此时建议用reloadData)

要求

  • Xcode 7.0以上

类库

  • HSBaseCellModel
  • HSImageCellModel
  • HSSwitchCellModel
  • HSTitleCellModel
  • HSTextCellModel
  • HSCustomCellModel
  • HSTitleTableViewCell
  • HSBaseTableViewCell
  • HSImageTableViewCell
  • HSSwitchTableViewCell
  • HSTextTableViewCell
  • HSCustomTableViewCell
  • HSHeaderModel
  • HSFooterModel

分类

  • NSArray+HSSafeAccess
  • NSBundle+HSImage
  • NSBundle+HSImage
  • UIColor+HSExtension
  • UIView+HSFrame

主要类

  • HSSetTableViewManager
  • UIViewController+HSSetTableView
  • HSSetTableViewMainController

架构图

演示如下:(第二张为本人项目运用本框架的界面效果图)

这么用

  • 使用 CocoaPods:
    请先安装cocoapods,如果版本太老无法找到,请升级cocopods到最新版本 命令:pod repo update

    • pod ‘HSSetTableViewController’,’~> 1.3.0′
    • 导入头文件:#import <HSSetTableViewController.h>
  • 直接导入:
    • 拖动 HSSetTableViewController 文件夹以及SDWebImage到你工程目录。
    • 导入头文件:#import "HSSetTableViewController.h"
  • 使用方法:
    • 分类使用:
      初始化配置
      - (void)initSetTableViewConfigureStyle:(UITableViewStyle)style;
      设置header:
      - (void)setTableViewHeaderArry:(NSMutableArray <HSHeaderModel *> *)headerArry;
      设置footer:
      - (void)setTableViewFooterArry:(NSMutableArray <HSHeaderModel *> *)headerArry;
      更改tableView位置约束:
      - (void)setupTableViewConstrint:(CGFloat)top left:(CGFloat)left right:(CGFloat)right bottom:(CGFloat)bottom;
  • 继承:你的UIViewController只需要继承基类HSSetTableViewMainController即可

    代码演示(详见个人信息界面demo)

    
    
     //初始化tableView
    [self initSetTableViewConfigureStyle:UITableViewStyleGrouped];
    
    //模拟演示tableView frame改变
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
         [self setupTableViewConstrint:0 left:0 right:0 bottom:0];
    });
    [self setupTableViewConstrint:0 left:20 right:-20 bottom:0];
    
    //组装头部和尾部视图
    NSMutableArray *headerModels = [NSMutableArray array];
    NSMutableArray *footerModels = [NSMutableArray array];
    for(NSInteger index = 0;index <= 5;index++){
        UIView *header = [[UIView alloc] initWithFrame:CGRectMake(0, 0, HS_SCREEN_WIDTH, 30)];
        UILabel *lable = [[UILabel alloc] initWithFrame:header.bounds];
        lable.text = [NSString stringWithFormat:@"  第%d个sectionheader",(int)index];
        [header addSubview:lable];
        [header setBackgroundColor:[UIColor clearColor]];
    
        HSHeaderModel *headerModel = [HSHeaderModel new];
        headerModel.headerView = header;
        headerModel.headerViewHeight = 30.0f;
        [headerModels addObject:headerModel];
    
        UIView *footer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, HS_SCREEN_WIDTH, 30)];
        lable = [[UILabel alloc] initWithFrame:footer.bounds];
        lable.text = [NSString stringWithFormat:@"  第%d个sectionfooter",(int)index];
        [footer addSubview:lable];
        [footer setBackgroundColor:[UIColor clearColor]];
    
        HSFooterModel *footerModel = [HSFooterModel new];
        footerModel.footerView = footer;
        footerModel.footerViewHeight = 30.0f;
        [footerModels addObject:footerModel];
    }
    [self setTableViewHeaderArry:headerModels];
    [self setTableViewFooterArry:footerModels];
    
    // 1.创建cell title模型
     HSTitleCellModel *cell1 = [[HSTitleCellModel alloc] initWithTitle:@"相册" actionBlock:^(HSBaseCellModel *model) {
        HSLog(@"点击相册")
    }];
    photo.icon = [UIImage imageNamed:@"MoreMyAlbum"];
    // 2. 创建右边文本显示cell(文本高度自适应)
    HSTextCellModel *cell2 = [[HSTextCellModel alloc] initWithTitle:@"文本更新" detailText:@"加班加到口吐二两鲜血" actionBlock:^(HSBaseCellModel *model) {
        NSLog(@"文本cell点击事件");
    }];
    // 3. 创建右边显示开关cell
    HSSwitchCellModel *cell3 = [[HSSwitchCellModel alloc] initWithTitle:@"开关控制" switchType:YES switchBlock:^(HSBaseCellModel *model, BOOL on) {
        NSLog(@"开关控制 --%d",on);
    }];
    //4.图片cell
    UIImage *placeHolder = [UIImage imageNamed:@"ic_icon_header"];
    HSImageCellModel *cell4 = [[HSImageCellModel alloc] initWithTitle:@"图片" placeholderImage:placeHolder imageUrl:@"http://scimg.jb51.net/170405/2-1F40522332a13.jpg" actionBlock:^(HSBaseCellModel *model) {
    
    } imageBlock:^{
    
    }];
    cell4.controlRightOffset = 40;
    cell4.showArrow = YES;
    
    //5.自定义cell(HSHeaderCellModel必须继承HSCustomCellModel,HSHeaderTableViewCell必须继承HSZhiHuCustomTableViewCell,cellellIdentifier为自定义model绑定的自定义cell,一样的cellellIdentifier说明cell类型是一样,如有不理解请阅读demo)
    __weak __typeof(&*self)weakSelf = self;
    HSHeaderCellModel *header = [[HSHeaderCellModel alloc] initWithCellIdentifier:@"HSHeaderTableViewCell" actionBlock:^(HSBaseCellModel *model) {
        HSHeaderCellModel *hederModel = (HSHeaderCellModel *)model;
        hederModel.text = @"奔跑吧,兄弟";
        [weakSelf updateCellModel:hederModel];
    }];
    header.text = @"天霸动霸tuo";
    header.cellHeight = 100;
    
    //5.添加到数据源
    NSMutableArray *section0 = [NSMutableArray arrayWithObjects:header,cell1,cell2, cell3,cell4,nil];
    [self.hs_dataArry addObject:section0];
    [self.hs_tableView reloadData];
    
    //6.更新每个cellModel属性后,只需要调用完成刷新
    [self updateCellModel:cell4];


## <a id="Warning"></a>警告

- 因为涉及到更新问题,添加到数据源的形式请使用NSMutableArray,不要使用NSArray存放。
- 不是把cell模型直接放入基类数据源,是先放入NSMutableArray的形式。再用self.hs_dataArry添加NSMutableArray。

## <a id="Hope"></a>希望

- 如果有任何问题,你可以 [issues me](https://github.com/shaohuihu/HSSetTableViewController/issues/new)! 
- 后续将会对cell扩展和配置,希望能支持更多的主流App.
- 希望能给更多童鞋带来开发的方便,可以一起讨论,如果你喜欢请给个star。

Latest podspec

{
    "name": "HSSetTableViewController",
    "version": "1.3.1",
    "summary": "u6240u6709Appu90fdu80fdu7528u5230u7684u8bbeu7f6eu754cu9762u548cu4e2au4ebau4fe1u606fu6846u67b6uff0cu9ad8u5ea6u5c01u88c5u3002u5916u90e8u53eau9700u8981u7ec4u88c5u6570u636eu6e90u3002u53efu7ee7u627fu3001u53efu5206u7c7bu30020u6c61u67d3uff0cu529fu80fdu5f3au5927uff0cu5f3au70c8u5efau8baeu4f7fu7528u5206u7c7buff01",
    "platforms": {
        "ios": "8.0"
    },
    "description": "u4e89u53d6u6253u9020u5929u671du6700u597du7528u7684u8bbeu7f6eu754cu9762u548cu4e2au4ebau4fe1u606fu6846u67b6uff0cu4e0au81f3u5206u5272u7ebfuff0cu4e0bu5230u7badu5934uff0cu6807u9898uff0cu8be6u7ec6u6807u9898uff0cu5bccu6587u672cu6807u9898u7b49u7b49u7edfu7edfu53efu914du7f6euff0cu53efu66f4u65b0uff0cu4f60u65e0u987bu5224u65adindexPath.rowu3002u4e5fu65e0u987bu7ea0u7ed3u5982u4f55u66f4u65b0celluff0cHSSetTableViewControlleru4e00u884cu4ee3u7801u5e2eu4f60u641eu5b9auff01",
    "homepage": "https://github.com/shaohuihu/HSSetTableViewController",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    },
    "authors": {
        "hushaohui": "[email protected]"
    },
    "source": {
        "git": "https://github.com/shaohuihu/HSSetTableViewController.git",
        "tag": "1.3.1"
    },
    "source_files": "HSSetTableViewController/**/*.{h,m}",
    "resources": "HSSetTableViewController/HSSetTableViewController.bundle",
    "requires_arc": true,
    "frameworks": "UIKit",
    "dependencies": {
        "SDWebImage": []
    }
}

Pin It on Pinterest

Share This