iOS基于MVVM設(shè)計(jì)模式的一個(gè)滑動(dòng)效果

簡(jiǎn)介

MVVM網(wǎng)上資料有很多,相信大家都有過(guò)一定了解。在這里就不再過(guò)多闡述了。
今天主要給大家分享一個(gè)很有意思的滑動(dòng)效果。詳情見(jiàn)下圖:


00.gif

實(shí)現(xiàn)方式

思路1:

當(dāng)我們看到這個(gè)效果的時(shí)候我們應(yīng)當(dāng)考慮的是imageViewcell的frame是如何變化的。只要把這個(gè)分析好了。這個(gè)效果就不難實(shí)現(xiàn)了。我起先最初的做法是將cell上圖片的frame上下分別大于cell50的高度。然后在scrollView代理方法里添加一個(gè)通知,將獲取到的偏移量傳遞過(guò)去。從而根據(jù)偏移量改變imageView的高度去實(shí)現(xiàn)。
可惜 ,然并卵!?。?這并不是最好的方式。。。

PS:上面的這種思路已經(jīng)被我砍掉了(原諒我廢話(huà)了這么多)

思路2:

如果我們獲取到cell在屏幕中的位置,如果我們獲取到cell在父視圖中心的位置,如果我們能根據(jù)這兩者的偏移量設(shè)置一個(gè)偏移的比例。那么我們的imageView根據(jù)設(shè)置好的偏移比例改變自身frame的高度不就完整實(shí)現(xiàn)了么!??!
關(guān)于點(diǎn)擊cell后展開(kāi)一個(gè)View只是在Model里增加了一個(gè)BOOL屬性而已,如果還有不太清楚的童鞋,文章最后會(huì)附上github鏈接!

不知道大家能不能理解,下面請(qǐng)看核心代碼:

核心代碼

- (CGFloat)cellWithOffset
{
    /*
     將rect由rect所在視圖轉(zhuǎn)換到目標(biāo)視圖view中,返回在目標(biāo)視圖view中的rect
     這里用來(lái)獲取self在window上的位置
     */
    CGRect toWindow = [self convertRect:self.bounds toView:self.window];
    
    //獲取父視圖的中心
    CGPoint windowCenter = self.superview.center;
    
    //cell在y軸上的偏移    CGRectGetMidY 獲取中心Y值
    CGFloat cellOffsetY = CGRectGetMidY(toWindow) - windowCenter.y;
    
    //位移比例
    CGFloat offsetScale = 2 * cellOffsetY / self.superview.frame.size.height ;
    
    //要補(bǔ)償?shù)钠?    CGFloat offset =  -offsetScale * kScreenWidth * 0.1;
    
    //讓pictureViewY軸方向偏移offset
    CGAffineTransform transY = CGAffineTransformMakeTranslation(0,offset);
    
    //給imageView的transfrom賦值
    self.pictureView.transform = transY;
    
    return offset;
}```


#最后
  本人也是初學(xué)MVVM設(shè)計(jì)模式,還有很多需要學(xué)習(xí)的地方。本文目的其實(shí)是希望大家都嘗試著去學(xué)習(xí)下MVVM設(shè)計(jì)模式(大神請(qǐng)忽略),試著去了解下“陌生的”```ViewModel```
如果有哪些不對(duì)的地方,歡迎批評(píng)指正!

本文github鏈接:https://github.com/JimmyLession/JMSlideDemo.git
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,153評(píng)論 4 61
  • 前言 由于最近兩個(gè)多月,筆者正和小伙伴們忙于對(duì)公司新項(xiàng)目的開(kāi)發(fā),筆者主要負(fù)責(zé)項(xiàng)目整體架構(gòu)的搭建以及功能模塊的分工。...
    CoderMikeHe閱讀 27,352評(píng)論 74 270
  • 四年了,我快要畢業(yè)了?;剡^(guò)頭想,如果我還是那個(gè)剛進(jìn)入大學(xué)的我,我現(xiàn)在會(huì)怎樣? 恩,我一定會(huì)乖乖地找一個(gè)和專(zhuān)業(yè)相關(guān)的...
    MengMeng啊MengMe閱讀 264評(píng)論 0 1
  • 當(dāng)斯琴高娃老師端坐在桌前,戴上眼鏡兒,目光從鏡框的上方掃出來(lái)、抿抿嘴時(shí),感覺(jué)她,像極了一個(gè)人。 那個(gè)人,哎,關(guān)于她...
    木徒閱讀 486評(píng)論 0 2
  • 去年弟弟在醫(yī)院幫我產(chǎn)檢排隊(duì),我坐在附近椅子上等候。他回來(lái)很鄙視的告訴我,有個(gè)哥們讓自己大肚子的老婆去排隊(duì),抱怨很累...
    小洱朵媽媽閱讀 433評(píng)論 0 0

友情鏈接更多精彩內(nèi)容