简单的使用滚动视图的setContentOffSet和setContentSize以及几种简单的动画使用

本文介绍了如何在iOS中使用UIScrollView的setContentOffset和setContentSize方法进行内容滚动,并展示了三种不同的动画实现方式,包括点击按钮回到顶部、左右滑动以及滑动到底部的动画效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#import "ViewController.h"


@interface ViewController ()

/** 一个scrollView 控件 */

@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;

@end


@implementation ViewController


/** 点击最上面按钮回到最上面*/

/**

 contentOffset: 设置偏移量 

 根据自己要求设置偏移量.

 */

- (IBAction)top:(id)sender {

        CGPoint offset = CGPointMake(self.scrollView.contentOffset.x, 0);

    [self.scrollView setContentOffset:offset animated:YES];

}


- (IBAction)left:(id)sender {

    // 动画用法1

    [UIView animateWithDuration:2.0 animations:^{

        self.scrollView.contentOffset = CGPointMake(0, self.scrollView.contentOffset.y);


        

    }];

}


- (IBAction)right:(id)sender {

    // 动画用法2 麻烦,不建议用


    [UIView beginAnimations:nil context:nil];

    [UIView setAnimationDelay:2.0];

    [UIView setAnimationDelegate:self]; // 可设置代理

    [UIView setAnimationDidStopSelector:@selector(stop)];

    [UIView setAnimationWillStartSelector:@selector(start)];

    

    CGFloat offsetX = self.scrollView.contentSize.width - self.scrollView.frame.size.width;

    self.scrollView.contentOffset = CGPointMake(offsetX, self.scrollView.contentOffset.y);

    

    [UIView commitAnimations]; // 结束动画

}


- (IBAction)bottom:(id)sender {

//    CGFloat offsetY = self.scrollView.contentSize.height - self.scrollView.frame.size.height;

//    CGPoint offset = self.scrollView.contentOffset;

//    offset.y = offsetY;

//    self.scrollView.contentOffset = offset;

    

    // 动画用法3

    [UIView animateWithDuration:2.0 animations:^{

        

        CGFloat offsetY = self.scrollView.contentSize.height - self.scrollView.frame.size.height;

        self.scrollView.contentOffset = CGPointMake(0, offsetY);


    } completion:^(BOOL finished) {

        NSLog(@"完成");

    }];


        //    self.scrollView.contentOffset.y = offsetY;

    // OC语法细节:不允许直接修改OC对象的结构体属性的成员


    

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值