iOS開發(fā)中的小技巧4:簡(jiǎn)單的頭部標(biāo)題+底部滑動(dòng)

在開發(fā)中經(jīng)常會(huì)用頭部標(biāo)題+底部輪播或者頁(yè)面轉(zhuǎn)換唉擂,類似于頭條效果夭织,此時(shí)不能在UIScrollView+UITableView混合使用网杆,如果使用UItableView的話吃环,加載數(shù)據(jù)時(shí)滑動(dòng)會(huì)導(dǎo)致程序崩潰也颤,所以需要使用addChildViewController方法;


這里寫一個(gè)簡(jiǎn)單的實(shí)例郁轻,標(biāo)題欄僅寫兩個(gè)

總體布局為頭部UIView上添加button翅娶,底部添加scrollView,scrollView上添加子控制器好唯。

準(zhǔn)備工作竭沫,新建兩個(gè)ViewController:TestOneVC、TestTwoVC

1)新建UIView骑篙,命名為kndView蜕提;新建兩個(gè)button:one、two靶端;新建一個(gè)scrollView谎势;

@property(nonatomic,strong)UIView *kindView;

@property(nonatomic,strong)UIButton *one;

@property(nonatomic,strong)UIButton *two;

@property(nonatomic,strong)UIScrollView *scrollView;

2)初始化kndView、one杨名、two脏榆、scrollView

self.kindView = [[UIView alloc] initWithFrame:CGRectMake(0, 64, SCREEN_W, 44)];

self.kindView.backgroundColor = [UIColor colorWithHexString:@"FFFFFF"];

[self.view addSubview:self.kindView];

self.one = [UIButton buttonWithType:(UIButtonTypeCustom)];

[self.one setTitle:@"一" forState:(UIControlStateNormal)];

[self.one addTarget:self action:@selector(oneAction) forControlEvents:(UIControlEventTouchUpInside)];

self.one.frame = CGRectMake(0, 0, SCREEN_W/2, 44);

[self.kindView addSubview:self.one];

[self.one setTitleColor:[UIColor colorWithHexString:@"030303"] forState:(UIControlStateNormal)];

self.one.titleLabel.font = [UIFont systemFontOfSize:18];

self.two = [UIButton buttonWithType:(UIButtonTypeCustom)];

[self.two setTitle:@"er" forState:(UIControlStateNormal)];

[self.two addTarget:self action:@selector(twoAction) forControlEvents:(UIControlEventTouchUpInside)];

self.two.frame = CGRectMake(SCREEN_W/2, 0, SCREEN_W/2, 44);

[self.kindView addSubview:self.two];

[self.two setTitleColor:[UIColor colorWithHexString:@"999999"] forState:(UIControlStateNormal)];

self.two.titleLabel.font = [UIFont systemFontOfSize:16];

self.scrollView = [[UIScrollView alloc] init];

[self.view addSubview:self.scrollView];

self.scrollView.frame = CGRectMake(0, CGRectGetMaxY(self.kind.frame), SCREEN_W, SCREEN_H-64-44-44);

self.scrollView.delegate = self;

self.scrollView.contentSize = CGSizeMake(SCREEN_W*2, 0);

self.scrollView.bounces = NO;

self.scrollView.pagingEnabled = YES;

self.scrollView.showsHorizontalScrollIndicator = NO;

self.scrollView.scrollEnabled = NO;

self.scrollView.delegate = self;

3)添加第一個(gè)子控制器

TestOneVC *one =? [[TestOneVC alloc] init];

[self.scrollView addSubview:one.view];

[self addChildViewController:one];

[self.view insertSubview:self.scrollView belowSubview:self.kindView];

4)創(chuàng)建剩余的子控制器

- (void)setupChildViewController{

TestTwoVC *two = [[TestTwoVC alloc] init];

[self addChildViewController:two];

}

5)button方法+子控制器選擇方法

- (void)showVc:(NSInteger)index {

CGFloat offsetX = index * SCREEN_W;

UIViewController *vc = self.childViewControllers[index];

// 判斷控制器的view有沒(méi)有加載過(guò),如果已經(jīng)加載過(guò),就不需要加載

if (vc.isViewLoaded) return;

[self.backScroll addSubview:vc.view];

vc.view.frame = CGRectMake(offsetX, 0, self.view.frame.size.width, self.view.frame.size.height);

}

-(void)oneAction{

self.scrollView.contentOffset = CGPointMake(0, 0);

[self.one setTitleColor:[UIColor colorWithHexString:@"030303"] forState:(UIControlStateNormal)];

self.one.titleLabel.font = [UIFont systemFontOfSize:18];

[self.two setTitleColor:[UIColor colorWithHexString:@"999999"] forState:(UIControlStateNormal)];

self.two.titleLabel.font = [UIFont systemFontOfSize:16];

[self showVc:0];

}

-(void)twoAction{

[self showVc:1];

self.backScroll.contentOffset = CGPointMake(SCREEN_W, 0);

[self.one setTitleColor:[UIColor colorWithHexString:@"999999"] forState:(UIControlStateNormal)];

self.one.titleLabel.font = [UIFont systemFontOfSize:16];

[self.two setTitleColor:[UIColor colorWithHexString:@"030303"] forState:(UIControlStateNormal)];

self.two.titleLabel.font = [UIFont systemFontOfSize:18];

}

6)如果想要滑動(dòng),在scrollView的代理方法中添加一下方法:

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{

if (scrollView.contentOffset.x/SCREEN_W==0) {

[self.one setTitleColor:[UIColor colorWithHexString:@"030303"] forState:(UIControlStateNormal)];

elf.one.titleLabel.font = [UIFont systemFontOfSize:18];

self.two.titleLabel.font = [UIFont systemFontOfSize:16];

[self showVc:0];

}else{

[self.one setTitleColor:[UIColor colorWithHexString:@"999999"] forState:(UIControlStateNormal)];

self.one.titleLabel.font = [UIFont systemFontOfSize:16];

[self.two setTitleColor:[UIColor colorWithHexString:@"030303"] forState:(UIControlStateNormal)];

self.two.titleLabel.font = [UIFont systemFontOfSize:18];

[self showVc:1];

}

}

7)細(xì)節(jié)處理

self.automaticallyAdjustsScrollViewInsets = NO;//不讓view亂跑

TestOneVC *one = [[TestOneVC alloc] init];

[self.scrollView addSubview:one.view];//添加one的view控制器到scrollView上台谍,已經(jīng)添加過(guò)了须喂,所以創(chuàng)建子控制器時(shí)不需要再添加這一個(gè)了

[self addChildViewController:one];//添加子控制器

[self.view insertSubview:self.scrollView belowSubview:self.kindView];將self.scrollView添加在kindView的下邊

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市趁蕊,隨后出現(xiàn)的幾起案子坞生,更是在濱河造成了極大的恐慌,老刑警劉巖掷伙,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件是己,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡任柜,警方通過(guò)查閱死者的電腦和手機(jī)赃泡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門寒波,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)乘盼,“玉大人升熊,你說(shuō)我怎么就攤上這事〕裾ぃ” “怎么了级野?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)粹胯。 經(jīng)常有香客問(wèn)我蓖柔,道長(zhǎng),這世上最難降的妖魔是什么风纠? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任况鸣,我火速辦了婚禮,結(jié)果婚禮上竹观,老公的妹妹穿的比我還像新娘镐捧。我一直安慰自己,他們只是感情好臭增,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布懂酱。 她就那樣靜靜地躺著,像睡著了一般誊抛。 火紅的嫁衣襯著肌膚如雪列牺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天拗窃,我揣著相機(jī)與錄音瞎领,去河邊找鬼。 笑死随夸,一個(gè)胖子當(dāng)著我的面吹牛九默,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播逃魄,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼荤西,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了伍俘?” 一聲冷哼從身側(cè)響起邪锌,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎癌瘾,沒(méi)想到半個(gè)月后觅丰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡妨退,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年妇萄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蜕企。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡冠句,死狀恐怖轻掩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情懦底,我是刑警寧澤唇牧,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站聚唐,受9級(jí)特大地震影響丐重,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜杆查,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一扮惦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧亲桦,春花似錦崖蜜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至桃笙,卻和暖如春氏堤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背搏明。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工鼠锈, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人星著。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓购笆,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親虚循。 傳聞我的和親對(duì)象是個(gè)殘疾皇子同欠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • 一:在ViewController中實(shí)例化MLPickerScrollView完成代理<MLPickerScrol...
    歐大帥Allen閱讀 6,783評(píng)論 1 9
  • 1.NSString過(guò)濾特殊字符串定義一個(gè)特殊字符的集合NSCharacterSet set = [NSChara...
    奮拓達(dá)閱讀 714評(píng)論 0 0
  • *7月8日上午 N:Block :跟一個(gè)函數(shù)塊差不多,會(huì)對(duì)里面所有的內(nèi)容的引用計(jì)數(shù)+1横缔,想要解決就用__block...
    炙冰閱讀 2,473評(píng)論 1 14
  • 打印View所有子視圖 layoutSubviews調(diào)用的調(diào)用時(shí)機(jī) 當(dāng)視圖第一次顯示的時(shí)候會(huì)被調(diào)用當(dāng)這個(gè)視圖顯示到...
    hyeeyh閱讀 497評(píng)論 0 3
  • 如果說(shuō)人生就是一場(chǎng)修行铺遂,無(wú)論你經(jīng)歷過(guò)什么,在經(jīng)歷什么茎刚,那都是前生的因今生的果襟锐,那么淵源輪回,宿命輾轉(zhuǎn)無(wú)論對(duì)與錯(cuò)膛锭,愛(ài)...
    慕汐繁星閱讀 250評(píng)論 0 0