iOS實(shí)現(xiàn)股票疯攒、課程表、Excel等上下左右滑動(dòng)效果(左邊的欄目固定,右邊能夠上下左右滑動(dòng)),本文用單個(gè)UITableView實(shí)現(xiàn)

首先列荔,很尷尬敬尺、失落的吐槽一下:本菜鳥不知道怎么上傳GIF,所以效果圖只能用圖片簡(jiǎn)單描述。

先簡(jiǎn)單描述需求:
1贴浙、最常見的股票效果砂吞,左右滑動(dòng),上下滾動(dòng)崎溃。
2呜舒、課程表效果,左邊固定第幾節(jié)課笨奠,右邊就是星期一到星期日的課程,可以左右滑動(dòng)唤殴。
3般婆、商家應(yīng)用App,實(shí)現(xiàn)計(jì)算收入的左右滑動(dòng)朵逝,類似Excel表格蔚袍。

即:實(shí)現(xiàn)一張列表,左邊的欄目固定,右邊能夠上下左右滑動(dòng)配名,重點(diǎn)是頭部也能隨著滑動(dòng)而滑動(dòng)啤咽。

1:布局任意你想要的視圖、2:向上滑動(dòng)的時(shí)候懸浮在最上面渠脉、3:實(shí)現(xiàn)左右滑動(dòng)
效果圖
向上滑動(dòng)2懸浮在最上面

扯淡一下:

1:網(wǎng)上你能看到的都是(大部分)都是用兩個(gè)UITableView+UIScrollView實(shí)現(xiàn)的宇整。
這樣導(dǎo)致第一張圖片1的視圖很難實(shí)現(xiàn),達(dá)不到跟隨滑動(dòng)而滑動(dòng)芋膘。你還要糾結(jié)怎么下滑刷新鳞青、上拉加載更多霸饲。

2:兩個(gè)UITableView的實(shí)現(xiàn)大概是這樣的:名稱代碼那一列是一個(gè)UITableView,后面那些值是一個(gè)UITableView臂拓。當(dāng)然懸浮在最上面的那一行是UIScrollView實(shí)現(xiàn)的厚脉,我的也是 . . .

3:代碼多敲敲、多看看胶惰、多對(duì)比傻工,才是自己的東西,也才能知道問題在哪里孵滞。


本文實(shí)現(xiàn)思路:

布局

問題來了:
1:滑動(dòng)cell的UIScrollView中捆,怎么實(shí)現(xiàn)全部的cell都跟著左右滑動(dòng)、還有最新價(jià)那一行也左右滑動(dòng)?

2:最新價(jià)所在行滑動(dòng)剃斧,那么下面內(nèi)容視圖cell轨香,咋么也跟著左右滑動(dòng)?

本菜鳥琢磨了很久幼东,最終用通知實(shí)現(xiàn)了臂容,下面直接貼關(guān)鍵代碼了,
道理就是:我在滑動(dòng)了根蟹,通知你也要滑動(dòng)了脓杉。然后就實(shí)現(xiàn)了 . . .

    // 在控制器中注冊(cè)一個(gè)通知,
    // 目的就是我滑動(dòng)了简逮,發(fā)出通知告訴對(duì)方也要跟著滑動(dòng)了
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(scrollMove:) name:tapCellScrollNotification object:nil];

控制器中UIScrollView的代理方法

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    //cell上的UIScrollView滑動(dòng)了viewForHeader上的UIScrollView跟著滑動(dòng)
    if ([scrollView isEqual:self.topScrollView]) {
        CGPoint offSet = _aroundCell.rightScrollView.contentOffset;
        offSet.x = scrollView.contentOffset.x;
        _aroundCell.rightScrollView.contentOffset = offSet;
    }
    
    //viewForHeader上的UIScrollView滑動(dòng)了球散,發(fā)出通知告訴cell上的UIScrollView也要滑動(dòng)了
    if ([scrollView isEqual:self.myTableView]) {
        // 發(fā)送通知
        [[NSNotificationCenter defaultCenter] postNotificationName:tapCellScrollNotification object:self userInfo:@{@"cellOffX":@(self.cellLastX)}];
    }
    
}

注冊(cè)通知實(shí)現(xiàn)的方法
cell滑動(dòng)了多少,viewForHeader也要跟著滑動(dòng)多少

-(void)scrollMove:(NSNotification*)notification
{
    NSDictionary *noticeInfo = notification.userInfo;
    NSObject *obj = notification.object;
    float x = [noticeInfo[@"cellOffX"] floatValue];
    self.cellLastX = x;
    CGPoint offSet = self.topScrollView.contentOffset;
    offSet.x = x;
    self.topScrollView.contentOffset = offSet;
    obj = nil;
}

接下來就是處理cell

    //給cell上的UIScrollView添加點(diǎn)擊事件散庶、注冊(cè)通知(目的跟控制器的通知一樣樣)
    UITapGestureRecognizer *tapGes = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)];
    [self.rightScrollView addGestureRecognizer:tapGes];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(scrollMove:) name:tapCellScrollNotification object:nil];

//cell中UIScrollView的代理事件

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
    if (!_isNotification) {
        // 發(fā)送通知
        [[NSNotificationCenter defaultCenter] postNotificationName:tapCellScrollNotification object:self userInfo:@{@"cellOffX":@(scrollView.contentOffset.x)}];
    }
    _isNotification = NO;
}

剛才我們給cell的UIScrollView添加了事件蕉堰,目的是告訴控制器我點(diǎn)擊了第幾行,控制器去做其他動(dòng)作悲龟。
并且我們擔(dān)心他的觸發(fā)事件跟其他的觸發(fā)事件沖突屋讶,我要要做一個(gè)手勢(shì)觸發(fā)判斷是不是我們加上去的,還是UITableViewCellContentView的事件

- (void)tapAction:(UITapGestureRecognizer *)gesture
{
    if (self.tapCellClick) {
        self.tapCellClick(indexPath);
    }
}

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {
        return NO;
    }
    return YES;
}

大概思路以及重要代碼都在上面了须教。
還是那句話:代碼多敲敲皿渗、多看看、多對(duì)比轻腺,才是自己的東西乐疆,也才能知道問題在哪里。
如果有什么不明白贬养,歡迎一起研究挤土、共勉。
Demo下載地址误算,歡迎stars --> AroundVC
歡迎大神多多指教耕挨,不勝感激细卧,謝謝。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末筒占,一起剝皮案震驚了整個(gè)濱河市贪庙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌翰苫,老刑警劉巖止邮,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異奏窑,居然都是意外死亡导披,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門埃唯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來撩匕,“玉大人,你說我怎么就攤上這事墨叛≈贡希” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵漠趁,是天一觀的道長(zhǎng)扁凛。 經(jīng)常有香客問我,道長(zhǎng)闯传,這世上最難降的妖魔是什么谨朝? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮甥绿,結(jié)果婚禮上字币,老公的妹妹穿的比我還像新娘。我一直安慰自己共缕,他們只是感情好纬朝,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著骄呼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪判没。 梳的紋絲不亂的頭發(fā)上蜓萄,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音澄峰,去河邊找鬼嫉沽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛俏竞,可吹牛的內(nèi)容都是我干的绸硕。 我是一名探鬼主播堂竟,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼玻佩!你這毒婦竟也來了出嘹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤咬崔,失蹤者是張志新(化名)和其女友劉穎税稼,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體垮斯,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡郎仆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了兜蠕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扰肌。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖熊杨,靈堂內(nèi)的尸體忽然破棺而出曙旭,到底是詐尸還是另有隱情,我是刑警寧澤猴凹,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布夷狰,位于F島的核電站,受9級(jí)特大地震影響郊霎,放射性物質(zhì)發(fā)生泄漏沼头。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一书劝、第九天 我趴在偏房一處隱蔽的房頂上張望进倍。 院中可真熱鬧,春花似錦购对、人聲如沸猾昆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽垂蜗。三九已至,卻和暖如春解幽,著一層夾襖步出監(jiān)牢的瞬間贴见,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工躲株, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留片部,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓霜定,卻偏偏與公主長(zhǎng)得像档悠,于是被迫代替她去往敵國(guó)和親廊鸥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

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

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)辖所、插件惰说、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,065評(píng)論 4 62
  • 概述在iOS開發(fā)中UITableView可以說是使用最廣泛的控件,我們平時(shí)使用的軟件中到處都可以看到它的影子奴烙,類似...
    liudhkk閱讀 9,007評(píng)論 3 38
  • 第19章 收牧草 麥克唐納少校在我們收割牧草的最后一天返回了山莊助被。我正提著一大籃子面包從大宅走出來,正好看到他出...
    茄喵閱讀 305評(píng)論 0 0
  • 西關(guān)是最能代表廣州風(fēng)情的老城區(qū)切诀,其中的恩寧路更被譽(yù)為“廣州最美老街”揩环,集中了騎樓建筑的精髓。西關(guān)分布了十幾處文物古...
    攜程攻略社區(qū)閱讀 535評(píng)論 0 0
  • 在碼出上篇博文之后幅虑,我翻了翻我之前的博文丰滑。從06年3月份在西安臨潼的一家網(wǎng)吧開設(shè)這個(gè)新浪博客以來,大小長(zhǎng)短的博文碼...
    老撒閱讀 513評(píng)論 0 1