(iOS)父子控制器

最近發(fā)現(xiàn)很多項目中都有用到父子控制器切換界面的功能号坡,就著手封裝一個簡易的小框架CDDPagerController吨凑,本著能簡單就簡單的原則耕捞,實現(xiàn)功能如下:
Demo簡介

1.集成方式1

  • 去GitHub上下載我的開源項目:CDDPagerController
  • 打開文件夾找到CDDPagerController文件负溪,拖到自己項目中
  • 繼承框架內頭文件#import "DCPagerController.h"
  • 根據(jù)需求調用DCPagerController.h的方法

集成方式2

  • 集成pods 使用方式 在Podfile中加入 pod 'CDDPagerController'即可~
/**
 根據(jù)角標,跳轉到對應的控制器(viewWillAppear方法里實現(xiàn))
 */
@property (nonatomic, assign) NSInteger selectIndex;

/**
 字體縮放
 */
- (void)setUpTitleScale:(void(^)(CGFloat *titleScale))titleScaleBlock;

/**
 progress設置
 *progressLength        設置progress長度
 *progressHeight        設置progress高度
 */
- (void)setUpProgressAttribute:(void(^)(CGFloat *progressLength, CGFloat *progressHeight))settingProgressBlock;

/**
 初始化
 
 *titleScrollViewBgColor 標題背景色
 *norColor               標題字體未選中狀態(tài)下顏色
 *selColor               標題字體選中狀態(tài)下顏色
 *proColor               字體下方指示器顏色
 *titleFont              標題字體大小
 *isShowPregressView     是否開啟字體下方指示器
 *isOpenStretch          是否開啟指示器拉伸效果
 *isOpenShade            是否開啟字體漸變效果

 @param BaseSettingBlock 設置基本屬性
 */
- (void)setUpDisplayStyle:(void(^)(UIColor **titleScrollViewBgColor,UIColor **norColor,UIColor **selColor,UIColor **proColor,UIFont **titleFont,BOOL *isShowPregressView,BOOL *isOpenStretch,BOOL *isOpenShade))BaseSettingBlock;


2.Demo事列(含GIF圖)

type01
DemoType01

a.繼承

#import "DCPagerController.h"

@interface DCDemo01ViewController : DCPagerController

b.實現(xiàn)

#pragma mark - LazyLoad
-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    
//    self.selectIndex = 3; //默認選擇第幾個設置(不設置則默認選擇第0個)
    
}

#pragma mark - LifeCyle
- (void)viewDidLoad {
    
    [super viewDidLoad];
    
    [self setUpAllChildViewController];
    
    [self setUpDisplayStyle:^(UIColor *__autoreleasing *titleScrollViewBgColor, UIColor *__autoreleasing *norColor, UIColor *__autoreleasing *selColor, UIColor *__autoreleasing *proColor, UIFont *__autoreleasing *titleFont, BOOL *isShowProgressView, BOOL *isOpenStretch, BOOL *isOpenShade) {
        *titleScrollViewBgColor = [UIColor whiteColor]; //標題View背景色(默認標題背景色為白色)
        *norColor = [UIColor darkGrayColor];            //標題未選中顏色(默認未選中狀態(tài)下字體顏色為黑色)
        *selColor = [UIColor orangeColor];              //標題選中顏色(默認選中狀態(tài)下字體顏色為紅色)
        *proColor = [UIColor purpleColor];              //滾動條顏色(默認為標題選中顏色)
        *titleFont = [UIFont systemFontOfSize:16];      //字體尺寸 (默認fontSize為15)
        
        /*
         以下BOOL值默認都為NO
         */
        *isShowProgressView = YES;                      //是否開啟標題下部Pregress指示器
        *isOpenStretch = YES;                           //是否開啟指示器拉伸效果
        *isOpenShade = YES;                             //是否開啟字體漸變
    }];
    
    
    [self setUpTitleScale:^(CGFloat *titleScale) { //titleScale范圍在0到1之間  <0 或者 > 1 則默認不縮放 默認設置titleScale就開啟縮放婴渡,不設置則關閉
        *titleScale = 0.1;
    }];
    
    
    [self setUpProgressAttribute:^(CGFloat *progressLength, CGFloat *progressHeight) {//progressLength 設置底部progress指示器的長度幻锁,有默認值為按鈕的寬度的百分之56  progressHeight默認高度4(并且不能大于10)
        *progressLength = 40;
        *progressHeight = 5;
    }];
    
}

#pragma mark - 添加所有子控制器
- (void)setUpAllChildViewController
{
    NSArray *titles = @[@"測試01",@"測試02",@"測試03",@"測試04",@"測試05"];
    for (NSInteger i = 0; i < titles.count; i++) {
        UIViewController *vc = [UIViewController new];
        vc.title = titles[i];
        vc.view.backgroundColor = RandColor; //隨機色
        [self addChildViewController:vc];
    }
}

Demo中其他幾種Type
DemoType02
- (void)viewDidLoad {
    
    [super viewDidLoad];
    
    [self setUpAllChildViewController];
    
    [self setUpDisplayStyle:^(UIColor *__autoreleasing *titleScrollViewBgColor, UIColor *__autoreleasing *norColor, UIColor *__autoreleasing *selColor, UIColor *__autoreleasing *proColor, UIFont *__autoreleasing *titleFont, BOOL *isShowProgressView, BOOL *isOpenStretch, BOOL *isOpenShade) {
        
        *titleFont = [UIFont systemFontOfSize:16];
        
        *isShowProgressView = YES;                      //是否開啟標題下部Pregress指示器
        *isOpenStretch = YES;                           //是否開啟指示器拉伸效果
        *isOpenShade = YES;                             //是否開啟字體漸變
    }];

}

#pragma mark - 添加所有子控制器
- (void)setUpAllChildViewController
{
    NSArray *titles = @[@"測試01",@"測試02",@"測試03",@"測試04"];
    for (NSInteger i = 0; i < titles.count; i++) {
        UIViewController *vc = [UIViewController new];
        vc.title = titles[i];
        vc.view.backgroundColor = RandColor; //隨機色
        [self addChildViewController:vc];
    }
}

DemoType03
#pragma mark - LifeCyle
- (void)viewDidLoad {
    
    [super viewDidLoad];
    
    [self setUpAllChildViewController];
    
}

#pragma mark - 添加所有子控制器
- (void)setUpAllChildViewController
{
    NSArray *titles = @[@"測試01",@"測試02",@"測試03"];
    for (NSInteger i = 0; i < titles.count; i++) {
        UIViewController *vc = [UIViewController new];
        vc.title = titles[i];
        vc.view.backgroundColor = RandColor; //隨機色
        [self addChildViewController:vc];
    }
}

DemoType04
#pragma mark - LifeCyle
- (void)viewDidLoad {
    
    [super viewDidLoad];
    
    [self setUpAllChildViewController];
    
    [self setUpDisplayStyle:^(UIColor *__autoreleasing *titleScrollViewBgColor, UIColor *__autoreleasing *norColor, UIColor *__autoreleasing *selColor, UIColor *__autoreleasing *proColor, UIFont *__autoreleasing *titleFont, BOOL *isShowProgressView, BOOL *isOpenStretch, BOOL *isOpenShade) {
       
        *selColor = [UIColor orangeColor];

        *isOpenShade = YES;
    }];
    
    [self setUpTitleScale:^(CGFloat *titleScale) { //titleScale范圍在0到1之間  <0 或者 > 1 則默認不縮放 默認設置titleScale就開啟縮放,不設置則關閉
        *titleScale = 0.3;
    }];
}

#pragma mark - 添加所有子控制器
- (void)setUpAllChildViewController
{
    NSArray *titles = @[@"測試01",@"測試02",@"測試03",@"測試04",@"測試05",@"測試06",@"測試07",@"測試08",@"測試09"];
    for (NSInteger i = 0; i < titles.count; i++) {
        UIViewController *vc = [UIViewController new];
        vc.title = titles[i];
        vc.view.backgroundColor = RandColor; //隨機色
        [self addChildViewController:vc];
    }
}

框架已上傳到GitHub,歡迎下載触幼,喜歡的話點個Star
Git地址:https://github.com/RocketsChen/CDDPagerController
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末硼瓣,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌堂鲤,老刑警劉巖亿傅,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異瘟栖,居然都是意外死亡葵擎,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門半哟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來酬滤,“玉大人,你說我怎么就攤上這事寓涨《⒋” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵戒良,是天一觀的道長体捏。 經(jīng)常有香客問我,道長糯崎,這世上最難降的妖魔是什么几缭? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮沃呢,結果婚禮上年栓,老公的妹妹穿的比我還像新娘。我一直安慰自己樟插,他們只是感情好韵洋,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著黄锤,像睡著了一般搪缨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鸵熟,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天副编,我揣著相機與錄音,去河邊找鬼流强。 笑死痹届,一個胖子當著我的面吹牛,可吹牛的內容都是我干的打月。 我是一名探鬼主播队腐,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼奏篙!你這毒婦竟也來了柴淘?” 一聲冷哼從身側響起迫淹,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎为严,沒想到半個月后敛熬,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡第股,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年应民,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片夕吻。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡诲锹,死狀恐怖,靈堂內的尸體忽然破棺而出梭冠,到底是詐尸還是另有隱情辕狰,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布控漠,位于F島的核電站蔓倍,受9級特大地震影響,放射性物質發(fā)生泄漏盐捷。R本人自食惡果不足惜偶翅,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望碉渡。 院中可真熱鬧聚谁,春花似錦、人聲如沸滞诺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽习霹。三九已至朵耕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間淋叶,已是汗流浹背阎曹。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留煞檩,地道東北人处嫌。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像斟湃,于是被迫代替她去往敵國和親熏迹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345