UIScrollView-滾動(dòng)背景

一.CABasicAnimation基本動(dòng)畫方式實(shí)現(xiàn)

1.工程鏈接

鏈接:
https://pan.baidu.com/s/1CthDU1zMykmJlnEpp9mk8w 密碼:r0kj

2.開發(fā)流程

1.創(chuàng)建UIScrollView的一個(gè)對象 ,并且取消掉邊界的回彈效果和橫向和縱向的滾動(dòng)條

    //滾動(dòng)視圖
    UIScrollView *scroll = [[UIScrollView alloc] 
                                          initWithFrame:self.view.bounds];
    //設(shè)置邊界是否有回彈效果
    scroll.bounces = NO;
    //隱藏橫向和縱向的滾動(dòng)條
    scroll.showsHorizontalScrollIndicator = NO;
    scroll.showsVerticalScrollIndicator = NO;
    //顯示
    [self.view addSubview:scroll];

2.創(chuàng)建UIImageView的一個(gè)對象,設(shè)置填充模式為按照寬高比縮放填充,并且設(shè)置好scroll的contentSize

    //獲得圖片
    UIImage *img =[UIImage imageNamed:@"beauty"];
    
    //圖片視圖
    self.imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width*3, self.view.frame.size.height)];
    _imgView.image = img;
    _imgView.contentMode = UIViewContentModeScaleAspectFill;
    [scroll addSubview:_imgView];
    
    //設(shè)置顯示范圍
    scroll.contentSize = CGSizeMake(self.view.frame.size.width*3, self.view.frame.size.height);

3.設(shè)置基本動(dòng)畫,并且允許動(dòng)畫自動(dòng)返回,重復(fù)次數(shù)為CGFLOAT_MAX

- (void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
    //當(dāng)前顯示的是圖片的最左端,往左移動(dòng),才會(huì)顯示圖片的右邊區(qū)域
    CABasicAnimation *ani = [CABasicAnimation animationWithKeyPath:@"transform.translation.x"];
    ani.fromValue = @(0);
    ani.toValue = @(-self.imgView.frame.size.width+self.view.frame.size.width);
    ani.duration = 4;
    ani.autoreverses = YES;
    ani.repeatCount = CGFLOAT_MAX;
    [self.imgView.layer addAnimation:ani forKey:nil];
}

3.運(yùn)行結(jié)果

滾動(dòng)背景

二.KVO方式實(shí)現(xiàn)

1.工程鏈接

鏈接:
https://pan.baidu.com/s/1M24W6fanRQYWgsSUM8Pu5Q 密碼:vx5w

2.開發(fā)流程

1.創(chuàng)建UIScrollView的一個(gè)對象 ,并且取消掉邊界的回彈效果和橫向和縱向的滾動(dòng)條

    //滾動(dòng)視圖
    UIScrollView *scroll = [[UIScrollView alloc] 
                                          initWithFrame:self.view.bounds];
    //設(shè)置邊界是否有回彈效果
    scroll.bounces = NO;
    //隱藏橫向和縱向的滾動(dòng)條
    scroll.showsHorizontalScrollIndicator = NO;
    scroll.showsVerticalScrollIndicator = NO;
    //顯示
    [self.view addSubview:scroll];

2.創(chuàng)建UIImageView的一個(gè)對象,設(shè)置填充模式為按照寬高比縮放填充,并且設(shè)置好scroll的contentSize

    //獲得圖片
    UIImage *img =[UIImage imageNamed:@"beauty"];
    
    //圖片視圖
    self.imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width*3, self.view.frame.size.height)];
    _imgView.image = img;
    _imgView.contentMode = UIViewContentModeScaleAspectFill;
    [scroll addSubview:_imgView];
    
    //設(shè)置顯示范圍
    scroll.contentSize = CGSizeMake(self.view.frame.size.width*3, self.view.frame.size.height);

3.監(jiān)聽temp屬性值得變化

//監(jiān)聽temp屬性值的變化
    [self addObserver:self forKeyPath:@"temp" 
             options:NSKeyValueObservingOptionNew context:nil];

4.kvo觸發(fā)的事件

//kvo觸發(fā)的事件
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context{
    [UIView animateWithDuration:4 animations:^{
        self.imgView.transform = CGAffineTransformTranslate(self. imgView.transform, -(self.imgView.frame.size.width-self.view.frame.size.width), 0);
    } completion:^(BOOL finished) {
        [UIView animateWithDuration:4 animations:^{
            self.imgView.transform = CGAffineTransformTranslate(self. imgView.transform, self.imgView.frame.size.width-self.view.frame.size.width, 0);
        } completion:^(BOOL finished) {
            //改變屬性變量的值
            self.temp = !self.temp;
        }];      
    }];
}

5.改變屬性的值,觸發(fā)監(jiān)聽事件

- (void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
    //當(dāng)前顯示的是圖片的最左端,往左移動(dòng),才會(huì)顯示圖片的右邊區(qū)域
    
    //改變屬性的值 觸發(fā) 監(jiān)聽事件
    self.temp = 1;
}

3.運(yùn)行結(jié)果

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

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

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,309評論 4 61
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,654評論 1 32
  • 文/靈林玖玖 最近,手頭有點(diǎn)寬裕,我和我先生決定換一套大一點(diǎn)的房子住。 昨天下午,我們一起去看動(dòng)車站附近一個(gè)小區(qū)的...
    靈林玖玖閱讀 1,346評論 20 19
  • 天已經(jīng)快亮了,酒吧的大部分顧客都已離開,酒保也在打盹,氛圍瞬間詭異 音樂播放著陳奕迅的一首《約定》: 還記得當(dāng)天旅...
    西門社長閱讀 256評論 0 0
  • 不要問自己這世界需要什么,應(yīng)該問什么能讓自己感到生命力,然后就朝那個(gè)方向前進(jìn),因?yàn)檫@世界正是需要有生命力的人
    琴音_李艷琴閱讀 261評論 0 1

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