iOS 一個可滑動縮放的輪播圖

yscroll.gif

為了做到這個效果沒少走彎路酥泛,之前一直使用TableViewHeaderView來做這個月趟,嘗試了半天,結(jié)果不行撇簿。后來去看百度中一張的下拉放大怎么實現(xiàn)的聂渊。看到別人使用contentInsert....哎四瘫、恍然大悟!

寫完后才發(fā)現(xiàn)汉嗽,原來并不是想象的那么難嘛!下面說幾個注意的點找蜜。當(dāng)然饼暑,我已經(jīng)封裝好了。你只需要不多的代碼就能搞定啦!有興趣的朋友去我的Git去下載DEMO就行啦,喜歡給個Star~

首先弓叛,想要下拉縮放上面的輪播圖彰居,你得把滑動的Offset傳給輪播圖。

 //告訴dragView表格滑動了
    CGFloat offset = scrollView.contentOffset.y + kHeaderHeight;
    [self.dragView dragViewWithOffset:offset];

我們進(jìn)入這個方法看下做了怎么樣的處理

#pragma mark -- 滾動偏移量
- (void)dragViewWithOffset:(CGFloat)offset {
    if (offset < 0) {
        NSDictionary *dic = @{@"offset" : [NSString stringWithFormat:@"%f",offset]};
        [[NSNotificationCenter defaultCenter] postNotificationName:@"changeSize" object:nil userInfo:dic];
        //更新layout
        CGSize size = self.layout.itemSize;
        size.height = self.initHeight - offset ;
        self.layout.itemSize = size;
        //更新self
        self.height = self.initHeight;
        self.y = 0;
        self.height = self.initHeight - offset;
    }else {
        self.y = 0;
        CGFloat minOffset = self.height;
        self.y = minOffset > offset ? - offset : - minOffset;
    }
    self.collectionView.height = self.height;
    self.pageControl.y = self.height - kPageControH;
}

根據(jù)偏移量修改輪播圖的height撰筷。當(dāng)偏移量<0的時候陈惰,也就是向上拖表格,這時候輪播圖的Cell大小不再合適當(dāng)前視圖毕籽。發(fā)個消息告訴cell抬闯。改變imageViewsize

#pragma mark -- set methed

- (void)setImageURL:(NSString *)imageURL {

    NSURL *dataUrl = [NSURL URLWithString:imageURL];
    [self.imageView sd_setImageWithURL:dataUrl placeholderImage:[UIImage imageNamed:@"pageOther.png"]];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(zoomScale:) name:@"changeSize" object:nil];
}

- (void)zoomScale:(NSNotification *)notification {
    NSDictionary *dic = notification.userInfo;
    CGFloat offset = [dic[@"offset"] floatValue];
    self.imageView.size = CGSizeMake(self.width, self.height - offset);
}

在設(shè)置圖片URL的時候,正好為每個cell都注冊一個通知关筒。接到這個通知修改size画髓。這樣就做到了。輪播圖和cell內(nèi)容都是一樣大小的了平委。

至于輪播圖的實現(xiàn)我就不多說了奈虾。

另外,我加入了定時器廉赔,自動滾動肉微,為了方便解決循環(huán)引用我使用了HWWeakTimer三方。代碼很少蜡塌,但是效果不錯也很方便碉纳。

關(guān)于導(dǎo)航欄和狀態(tài)欄的動態(tài)顯示問題,原本我自己寫了一套馏艾,是放在輪播圖中的劳曹,但是我覺得放進(jìn)去不好,耦合性差琅摩,如果有人不想改铁孵,也許就得修改我的代碼了。因此我拆到外面了房资,修改為使用GKFadeNavigationController這個三方蜕劝。你只需要繼承他的導(dǎo)航控制器,再寫一些代碼就行了轰异。(我的Demo就是在故事版中繼承了這個控制器)

更新日志: iOS 11適配
以上講解代碼均在iOS 11之前版本岖沛,11之后我對其進(jìn)行了重構(gòu),使用約束控制放大縮小搭独。這里不再做講解婴削,感興趣的下載上面提供的Demo自行查看即可。
iOS技術(shù)交流群:511860085 歡迎加入牙肝!

封面嗤朴。

394AF221-A512-4F3F-91A7-CAE0009D001D.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末互躬,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子吼渡,更是在濱河造成了極大的恐慌,老刑警劉巖乓序,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寺酪,死亡現(xiàn)場離奇詭異替劈,居然都是意外死亡寄雀,警方通過查閱死者的電腦和手機(jī)陨献,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門盒犹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人眨业,你說我怎么就攤上這事急膀。” “怎么了卓嫂?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵聘殖,是天一觀的道長晨雳。 經(jīng)常有香客問我奸腺,道長,這世上最難降的妖魔是什么突照? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮绷旗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘庄岖。我一直安慰自己,他們只是感情好隅忿,可當(dāng)我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著背桐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪链峭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天熙卡,我揣著相機(jī)與錄音励饵,去河邊找鬼驳癌。 笑死役听,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的典予。 我是一名探鬼主播灾杰,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼熙参!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起孽椰,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎栏渺,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體磕诊,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡纹腌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了莱褒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡广凸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出谅海,到底是詐尸還是另有隱情,我是刑警寧澤扭吁,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布智末,位于F島的核電站谅摄,受9級特大地震影響系馆,放射性物質(zhì)發(fā)生泄漏顽照。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一代兵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧植影,春花似錦、人聲如沸思币。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽博投。三九已至,卻和暖如春毅哗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背虑绵。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工蒸殿, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留筷厘,地道東北人。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓摊溶,卻偏偏與公主長得像,于是被迫代替她去往敵國和親莫换。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,452評論 2 348

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,737評論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件惰爬、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,059評論 4 62
  • 聚云后端云,讓移動開發(fā)更簡單陵叽,讓迭代更快速。 創(chuàng)業(yè)團(tuán)隊使用聚云后端云巩掺,意味著再也不用租服務(wù)器页畦,也不用后端開發(fā)工程師...
    toldo閱讀 1,318評論 0 2
  • 天邊的魚肚兒還沒翻透,顧峰就已經(jīng)醒來豫缨。幾個小時前的酒勁兒還沒有過去,他閉著眼睛翻了個身盡量讓呼吸顯得平穩(wěn)州胳。不出意外...
    見手青閱讀 531評論 1 0
  • 他緩慢的走著 步履蹣跚 一句 回來了啊 平靜的臉龐遮不住那顫抖的音嗓 忽然轉(zhuǎn)身 然而還是看到了他眼角含包的淚 走吧...
    野浪花閱讀 373評論 0 1