scrollView中contentOffset与contentInset比较(粗浅理解)

本文探讨了iOS开发中UIScrollView的contentOffset和contentInset的区别。通过不同代码示例展示了如何设置contentSize、contentOffset和contentInset,并分析了它们对滚动效果的影响。当设置contentInset时,它会扩大滚动视图的显示区域,而contentOffset则决定了内容初始显示的位置。当contentOffset超出contentInset设定的边界,滚动视图的镜头将停止在最大范围内。

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

当不设置额外滚动范围属性时的代码和运行结果:

- (void)viewDidLoad {

    [super viewDidLoad];

    

    //设置滚动范围

    self.scrollView.contentSize=CGSizeMake(self.headView.frame.size.width, self.headView.frame.size.height);

    //设置偏移大小

    self.scrollView.contentOffset=CGPointMake(-20, -20);

    // Do any additional setup after loading the view, typically from a nib.

  

}



当设置额外滚动范围属性时的代码和运行结果(此时都设置为0):

- (void)viewDidLoad {

    [super viewDidLoad];

    

    //设置滚动范围

    self.scrollView.contentSize=CGSizeMake(self.headView.frame.size.width, self.headView.frame.size.height);

    //设置偏移大小

    self.scrollView.contentOffset=CGPointMake(-20, -20);

    //设置额外滚动大小

    self.scrollView.contentInset=UIEdgeInsetsMake(0, 0, 0, 0);

}


当设置额外滚动范围属性时的代码和运行结果(此时将上设置为10):

- (void)viewDidLoad {

    [super viewDidLoad];

    

    //设置滚动范围

    self.scrollView.contentSize=CGSizeMake(self.headView.frame.size.width, self.headView.frame.size.height);

    //设置偏移大小

    self.scrollView.contentOffset=CGPointMake(-20, -20);

    //设置额外滚动大小

    self.scrollView.contentInset=UIEdgeInsetsMake(10, 0, 0, 0);

}


当设置额外滚动范围属性时的代码和运行结果(此时将左设置为10):

- (void)viewDidLoad {

    [super viewDidLoad];

    

    //设置滚动范围

    self.scrollView.contentSize=CGSizeMake(self.headView.frame.size.width, self.headView.frame.size.height);

    //设置偏移大小

    self.scrollView.contentOffset=CGPointMake(-20, -20);

    //设置额外滚动大小

    self.scrollView.contentInset=UIEdgeInsetsMake(0, 10, 0, 0);

}


 当设置额外滚动范围属性时的代码和运行结果(此时将上和左设置为10):

- (void)viewDidLoad {

    [super viewDidLoad];

    

    //设置滚动范围

    self.scrollView.contentSize=CGSizeMake(self.headView.frame.size.width, self.headView.frame.size.height);

    //设置偏移大小

    self.scrollView.contentOffset=CGPointMake(-20, -20);

    //设置额外滚动大小

    self.scrollView.contentInset=UIEdgeInsetsMake(10, 10, 0, 0);

}



当设置额外滚动范围属性时的代码和运行结果(此时将下设置为10):

- (void)viewDidLoad {

    [super viewDidLoad];

    

    //设置滚动范围

    self.scrollView.contentSize=CGSizeMake(self.headView.frame.size.width, self.headView.frame.size.height);

    //设置偏移大小

    self.scrollView.contentOffset=CGPointMake(-20, -20);

    //设置额外滚动大小

    self.scrollView.contentInset=UIEdgeInsetsMake(0, 0, 10, 0);

}




个人的见解:scrollView.contentInset 默认情况下其初始值都为0;当设置了初始值时(不为零),它相当于给scrollView的范围进行了扩大,并加了一堵墙,如果把scrollView中的图片理解为一个背景,将scrollView理解为一个镜头,通过改变scrollView.contentOffset的值就可以改变镜头的初始化位置,但是当你设置了scrollView.contentInset 后如果其改变的位置超过了你加的范围它的镜头最多移到你加范围的最大位置。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值