iOS 實現鳳凰新聞的視覺差輪播圖

手機里下載了很多新聞類的App,當然作為一個碼農就算看新聞也會從技術的角度去思考一些內容的實現過程,這也能幫你發現很多trick ,于是就有了本文

  • 先看鳳凰新聞的動畫效果
鳳凰banner.gif
  • 作為一個懶惰而不愿意思考的碼農,看見想要的東西當然是Github,經過一陣百度,google之后鎩羽而歸,果然還是需要自己動手。既然沒有現成demo,但是有成品啊
  • 這個時候就該reveal神器發揮作用了,(ps:Reveal破解就不提了,一搜一大堆,推薦一款插件RHRevealLoader,省去很多麻煩)

通過Reveal不難發現:

1.  banner結構就是常用的scrollview +  3個ContainerView的重用
2.  視覺差的效果并不是用ContainerView來實現,ContainerView只作用為重用的父視圖
3.  動畫大概是在ContainerView上的SubView(SetImage) 相對于 ScrollView的contentOffset來完成的
rea.png

hierarchy
  • 既然思路很清晰了就可以開始寫代碼了,這里只貼出核心代碼

scrollView重用代碼

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

    div_t x = div(scrollView.contentOffset.x,scrollView.frame.size.width);

    if (x.quot == 0) {
        self.currentIndex -=1;
    }else if(x.quot == 2){
        self.currentIndex +=1;
    }
    
    [self setContainerImageViews];
    self.scrollView.contentOffset = CGPointMake(CGRectGetWidth(scrollView.bounds), 0);
    
    [self resumeTimer];
}

視差動畫代碼

//參數是scrollView的contentOffset.y
- (void)setOffsetWithFactor:(float)value{
    CGRect  selfToWindow = [self convertRect:self.bounds toView:self.window]; //當前View的frame
    CGFloat selfCenterX = CGRectGetMidX(selfToWindow); //當前View的centerX
    CGPoint windowCenter = self.window.center;
    CGFloat selfOffsetX = selfCenterX - windowCenter.x; //偏移距離
    
    CGAffineTransform transX = CGAffineTransformMakeTranslation(- selfOffsetX * value, 0);
    self.contentIMG.transform = transX;
}
  • 總的來說這個東西并不存在實現上的難度,難得是有這種idea并能夠在項目中原創出實用的效果.(再牛逼的搬運工又有什么意義呢?,唉)

demo地址,歡迎star

  • 最后看看實現的效果
YYBanner.gif
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,252評論 4 61
  • 想念鳳凰、西塘、千島湖 原來這些以往看起來千篇一律的風景也有著細膩的不同 每一次的心情好像都不一樣,每一次的景色也...
    玫瑰花名未知閱讀 124評論 0 0
  • 幸福是需要修出來的#每天進步1%,幸福12班,20-王青青—晉江 【幸福三朵玫瑰】 全然的陪伴女兒? 慢慢體會這種...
    王青青幸福實修者閱讀 349評論 1 1
  • 前世的風雨何時吹過今世的荒涼沿街的冰冷何時懂得行人的悲傷寂寞的歲月怎知雨后彩虹會掛在天上人生的成熟就是麥穗低下幸福的臉龐
    昊水長天閱讀 276評論 6 8
  • 最近在聽武志紅老師的心理學課《擁有一個自己說了算的人生》。第一周的主題是《自我實現的預言》。 老師布置的作業是,留...
    華筠沁閱讀 484評論 0 1