模仿淘寶下拉顯示詳情展示頁面妹沙,上拉返回界面

效果圖一

效果圖二

demo下載地址:https://github.com/ZhengYaWei1992/ZWTaobaoDetail
首先我們要知道淘寶的類似頁面,商品展示頁面是一個(gè)tabbleView晾嘶,詳情頁面是一個(gè)webView妓雾。該效果的實(shí)現(xiàn),實(shí)際上就是監(jiān)控tabbleView和wenbView的contentOffset值來調(diào)節(jié)tabbleView和webView的frame值垒迂,從而控制兩個(gè)頁面的切換展示械姻。主要實(shí)現(xiàn)代碼在ScrollView的scrollViewDidEndDragging這個(gè)代理方法中。其中ScrollDistance是一個(gè)宏常量机断,主要控制拖動(dòng)的距離楷拳。

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
    CGFloat offsetY = scrollView.contentOffset.y;
    if ([scrollView isKindOfClass:[UITableView class]]) {
        // 能觸發(fā)翻頁的理想值:tableView整體的高度減去屏幕本身的高度
        CGFloat valueNum = self.tableView.contentSize.height -self.view.frame.size.height;
        if ((offsetY - valueNum) > ScrollDistance)
        {
            [self goToDetail]; // 進(jìn)入圖文詳情的動(dòng)畫
        }
    }else{// webView頁面上的滾動(dòng)
        if(offsetY<0 && -offsetY > ScrollDistance)
        {
            [self backToFirstPage]; // 返回基本詳情界面的動(dòng)畫
        }
    }
}

以下兩個(gè)方法分別是進(jìn)入到webView和tabbleView具體實(shí)現(xiàn)代碼。

/**進(jìn)入到webView*/
- (void)goToDetail{
    [UIView animateWithDuration:0.3 delay:0.0 options:UIViewAnimationOptionLayoutSubviews animations:^{
        _webView.frame = CGRectMake(0, 20, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height - 20);
        _tableView.frame = CGRectMake(0, -self.tableView.bounds.size.height, [UIScreen mainScreen].bounds.size.width, self.tableView.bounds.size.height);
    } completion:^(BOOL finished) {
        
    }];
}

/**返回到tableView*/
-(void)backToFirstPage{
    [UIView animateWithDuration:0.3 delay:0.0 options:UIViewAnimationOptionLayoutSubviews animations:^{
        _tableView.frame = CGRectMake(0, 20, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height - 20);
        _webView.frame = CGRectMake(0, _tableView.contentSize.height, [UIScreen mainScreen].bounds.size.width, self.tableView.bounds.size.height);
    } completion:^(BOOL finished) {
        
    }];
}

除了上面的核心代碼之外吏奸,我們還要監(jiān)控webView的scrollView屬性的contentOffset值欢揖,判斷拖動(dòng)距離,在webView頂部給用戶提示奋蔚。

[_webView.scrollView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context
{
    if(object == _webView.scrollView && [keyPath isEqualToString:@"contentOffset"])
    {
//        NSLog(@"----old:%@----new:%@",change[@"old"],change[@"new"]);
        [self headLabAnimation:[change[@"new"] CGPointValue].y];
    }else
    {
        [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
    }
    
}
// 頭部提示文本動(dòng)畫
- (void)headLabAnimation:(CGFloat)offsetY
{
    self.headLabel.alpha = -offsetY/60;
    self.headLabel.center = CGPointMake([UIScreen mainScreen].bounds.size.width/2.0, -offsetY/2.f);
    // 圖標(biāo)翻轉(zhuǎn)她混,表示已超過臨界值,松手就會返回上頁
    if(-offsetY> ScrollDistance){
//        self.headLabel.textColor = [UIColor redColor];
        self.headLabel.text = @"釋放泊碑,返回詳情";
    }else{
//        self.headLabel.textColor = [UIColor lightGrayColor];
        self.headLabel.text = @"下拉坤按,返回詳情";
    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市馒过,隨后出現(xiàn)的幾起案子臭脓,更是在濱河造成了極大的恐慌,老刑警劉巖沉桌,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谢鹊,死亡現(xiàn)場離奇詭異,居然都是意外死亡留凭,警方通過查閱死者的電腦和手機(jī)佃扼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蔼夜,“玉大人兼耀,你說我怎么就攤上這事。” “怎么了瘤运?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵窍霞,是天一觀的道長。 經(jīng)常有香客問我拯坟,道長但金,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任郁季,我火速辦了婚禮冷溃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘梦裂。我一直安慰自己似枕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布年柠。 她就那樣靜靜地躺著凿歼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪冗恨。 梳的紋絲不亂的頭發(fā)上答憔,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天,我揣著相機(jī)與錄音派近,去河邊找鬼攀唯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛渴丸,可吹牛的內(nèi)容都是我干的侯嘀。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼谱轨,長吁一口氣:“原來是場噩夢啊……” “哼戒幔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起土童,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤诗茎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后献汗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體敢订,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年罢吃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了楚午。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,144評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡尿招,死狀恐怖矾柜,靈堂內(nèi)的尸體忽然破棺而出阱驾,到底是詐尸還是另有隱情,我是刑警寧澤怪蔑,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布里覆,位于F島的核電站,受9級特大地震影響缆瓣,放射性物質(zhì)發(fā)生泄漏喧枷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一捆愁、第九天 我趴在偏房一處隱蔽的房頂上張望割去。 院中可真熱鬧窟却,春花似錦昼丑、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至茬腿,卻和暖如春呼奢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背切平。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工握础, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人悴品。 一個(gè)月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓禀综,卻偏偏與公主長得像,于是被迫代替她去往敵國和親苔严。 傳聞我的和親對象是個(gè)殘疾皇子定枷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評論 2 355

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,190評論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件届氢、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,109評論 4 62
  • 十月的洛陽城已有了微微的涼意欠窒,然而京師的繁華卻依舊如荼,討生活的藝人和商販讓古老的都城顯得格外熱鬧退子。有著“洛城第一...
    清風(fēng)墨痕閱讀 702評論 0 5
  • 出差岖妄,住姐姐家,指導(dǎo)外甥女學(xué)習(xí)感觸頗深寂祥,一年級荐虐,如此狀態(tài),以后該怎么處呢壤靶? 妞一直在學(xué)美術(shù)和舞蹈缚俏,看起來也是興趣盎...
    云心妹妹閱讀 148評論 0 0
  • 直說吃過了晌午飯?jiān)僮?我躺過了黃昏與日落 在這三十幾層的高樓上 差點(diǎn)兒把記賬本丟落 游歷那寬寬敞敞轟轟鳴鳴的機(jī)械商...
    runan777閱讀 215評論 0 0