BABaseProject/BAMainCode/BACode/Message(消息)/Controller/BAMessageViewController.m

/*!
 *  @header BAKit.h
 *          BABaseProject
 *
 *  @brief  BAKit
 *
 *  @author 博爱
 *  @copyright    Copyright © 2016年 博爱. All rights reserved.
 *  @version    V1.0
 */

//                            _ooOoo_
//                           o8888888o
//                           88" . "88
//                           (| -_- |)
//                            O\ = /O
//                        ____/`---'\____
//                      .   ' \\| |// `.
//                       / \\||| : |||// \
//                     / _||||| -:- |||||- \
//                       | | \\\ - /// | |
//                     | \_| ''\---/'' | |
//                      \ .-\__ `-` ___/-. /
//                   ___`. .' /--.--\ `. . __
//                ."" '< `.___\_<|>_/___.' >'"".
//               | | : `- \`.;`\ _ /`;.`/ - ` : | |
//                 \ \ `-. \_ __\ /__ _/ .-` / /
//         ======`-.____`-.___\_____/___.-`____.-'======
//                            `=---='
//
//         .............................................
//                  佛祖镇楼                  BUG辟易
//          佛曰:
//                  写字楼里写字间，写字间里程序员；
//                  程序人员写程序，又拿程序换酒钱。
//                  酒醒只在网上坐，酒醉还来网下眠；
//                  酒醉酒醒日复日，网上网下年复年。
//                  但愿老死电脑间，不愿鞠躬老板前；
//                  奔驰宝马贵者趣，公交自行程序员。
//                  别人笑我忒疯癫，我笑自己命太贱；
//                  不见满街漂亮妹，哪个归得程序员？

/*
 
 *********************************************************************************
 *
 * 在使用BAKit的过程中如果出现bug请及时以以下任意一种方式联系我，我会及时修复bug
 *
 * QQ     : 可以添加ios开发技术群 479663605 在这里找到我(博爱1616【137361770】)
 * 微博    : 博爱1616
 * Email  : 137361770@qq.com
 * GitHub : https://github.com/boai
 * 博客园  : http://www.cnblogs.com/boai/
 * 博客    : http://boai.github.io
 
 *********************************************************************************
 
 */

#import "BAMessageViewController.h"


@interface BAMessageViewController ()
<
    UITableViewDelegate,
    UITableViewDataSource
>
@property (nonatomic, strong) UITableView     *tableView;
@property (nonatomic, strong) NSMutableArray  *titlesArray;
@property (nonatomic, strong) NSMutableArray  *classNamesArray;
@property (nonatomic, strong) NSMutableArray  *contentsArray;
@property (nonatomic, strong) UIView          *statusBarView;   //状态栏背景

@end

@implementation BAMessageViewController


/*! 用的渐变navi！ */
- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    
    [self.navigationController.navigationBar setShadowImage:[UIImage new]];
    [self.navigationController.navigationBar ba_setBackgroundColor:[UIColor clearColor]];
    [self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:BAKit_Color_Black, NSForegroundColorAttributeName, nil]];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    
    [self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:BAKit_Color_Black, NSForegroundColorAttributeName, nil]];
    [self.navigationController.navigationBar setShadowImage:[UIImage new]];
    [self.navigationController.navigationBar ba_setBackgroundColor:BAKit_Color_White];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    self.view.backgroundColor = BAKit_Color_Yellow;

    self.title = @"消 息";
    
    [self ba_setupNavi];
    [self ba_setupUI];

}

- (void)ba_setupNavi
{
    _statusBarView = [[UIView alloc] initWithFrame:CGRectMake(0, -20, BA_SCREEN_WIDTH, 20)];
    [self.navigationController.navigationBar addSubview:_statusBarView];
}

- (void)ba_setupUI
{
    [self creatData];
    self.tableView.hidden = NO;
}

- (void)creatData
{
    [self addCell:@"tableView的高级用法1" content:@"1、封装baseCell" class:@"DemoVC2_01"];
    [self addCell:@"cell的分组展开收回" content:@"2、cell的分组展开收回" class:@"DemoVC2_02"];
    [self addCell:@"系统各种设置的跳转" content:@"3、系统各种设置的跳转" class:@"DemoVC2_03"];
    [self addCell:@"博爱百度地图" content:@"4、博爱百度地图" class:@"DemoVC2_04"];
    [self addCell:@"runtime 的常用方法" content:@"5、runtime 的常用方法" class:@"DemoVC2_05"];
    [self addCell:@"NSMutableAttributedString 的完美封装" content:@"6、NSMutableAttributedString 的完美封装" class:@"DemoVC2_06"];
    [self addCell:@"iOS 各种基本算法" content:@"7、iOS 各种基本算法：选择排序、冒泡排序、快速排序..." class:@"DemoVC2_07"];
    [self addCell:@"OC 与 JS 交互" content:@"8、OC 与 JS 交互" class:@"DemoVC2_08"];
    [self addCell:@"OC 基础动画" content:@"9、OC 基础动画" class:@"DemoVC2_09"];
    [self addCell:@"系统各种设置的跳转" content:@"3、上滑测试渐变navi" class:@"DemoVC2_03"];
    [self addCell:@"系统各种设置的跳转" content:@"3、上滑测试渐变navi" class:@"DemoVC2_03"];
    [self addCell:@"系统各种设置的跳转" content:@"3、上滑测试渐变navi" class:@"DemoVC2_03"];
    [self addCell:@"系统各种设置的跳转" content:@"3、上滑测试渐变navi" class:@"DemoVC2_03"];
    [self addCell:@"系统各种设置的跳转" content:@"3、上滑测试渐变navi" class:@"DemoVC2_03"];
    [self addCell:@"系统各种设置的跳转" content:@"3、上滑测试渐变navi" class:@"DemoVC2_03"];

    
}

- (void)addCell:(NSString *)title content:(NSString *)content class:(NSString *)className
{
    [self.titlesArray addObject:title];
    [self.classNamesArray addObject:className];
    [self.contentsArray  addObject:content];
}

- (NSMutableArray *)titlesArray
{
    if (!_titlesArray)
    {
        _titlesArray = @[].mutableCopy;
    }
    return _titlesArray;
}

- (NSMutableArray *)classNamesArray
{
    if (!_classNamesArray)
    {
        _classNamesArray = @[].mutableCopy;
    }
    return _classNamesArray;
}

- (NSMutableArray *)contentsArray
{
    if (!_contentsArray)
    {
        _contentsArray = @[].mutableCopy;
    }
    return _contentsArray;
}

- (UITableView *)tableView
{
    if (!_tableView)
    {
        _tableView = [[UITableView alloc] init];
        _tableView.delegate = self;
        _tableView.dataSource = self;
        _tableView.separatorColor = [UIColor redColor];
        
        [self.view addSubview:_tableView];
        
        [_tableView mas_makeConstraints:^(MASConstraintMaker *make) {
            make.edges.mas_equalTo(UIEdgeInsetsMake(0 , 0, 0, 0));
        }];
        
        _tableView.tableFooterView = [UIView new];
    }
    return _tableView;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return self.titlesArray.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
    
    if (!cell)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"cell"];
    }
    
    cell.textLabel.text = self.contentsArray[indexPath.row];
    
    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *className = self.classNamesArray[indexPath.row];
    Class class = NSClassFromString(className);
    if (class)
    {
        UIViewController *vc = class.new;
        vc.title = self.titlesArray[indexPath.row];
        
        [self.navigationController pushViewController:vc animated:YES];
    }
    
    /*! 点击立刻取消该cell的选中状态 */
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGFloat offset = scrollView.contentOffset.y;
    if (offset < 0)
    {
        self.navigationController.navigationBar.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0];
        _statusBarView.backgroundColor = [[UIColor whiteColor] colorWithAlphaComponent:0];
    }
    else
    {
        CGFloat alpha = (self.tableView.contentOffset.y - 30) / 75;
        
        _statusBarView.backgroundColor = [BAKit_Color_Red colorWithAlphaComponent:alpha];
        self.navigationController.navigationBar.backgroundColor = [BAKit_Color_Red colorWithAlphaComponent:alpha];
    }
}

@end
