我正在以编程方式添加滚动,但由于某种原因它不会在开始时启动

时间:2014-03-20 10:56:03

标签: ios objective-c cocoa-touch uiview uiscrollview

我以编程方式添加了一个滚动条,但由于某种原因它不会从头开始。

self.backgroundColor = [UIColor redColor];
self.scrollView = [[UIScrollView alloc]initWithFrame:self.frame];
self.scrollView.backgroundColor = [UIColor greenColor];
[self addSubview:self.scrollView];
self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width, self.scrollView.frame.size.height);

以下是一些日志:

NSLog(@"contentOffset - %@",NSStringFromCGPoint(self.scrollView.contentOffset));
NSLog(@"contentSize - %@",NSStringFromCGSize(self.scrollView.contentSize));
NSLog(@"contentInset - %@",NSStringFromUIEdgeInsets(self.scrollView.contentInset));
NSLog(@"frame - %@",NSStringFromCGRect(self.scrollView.frame));

2014-03-20 12:53:56.356 contentOffset - {0, 0}
2014-03-20 12:53:56.357 contentSize - {320, 423}
2014-03-20 12:53:56.357 contentInset - {0, 0, 0, 0}
2014-03-20 12:53:56.358 frame - {{0, 156}, {320, 423}}
2014-03-20 12:53:56.360 contentOffset - {0, 0}
2014-03-20 12:53:56.360 contentSize - {320, 423}
2014-03-20 12:53:56.361 contentInset - {0, 0, 0, 0}
2014-03-20 12:53:56.361 frame - {{0, 156}, {320, 423}}

3 个答案:

答案 0 :(得分:0)

我猜这个:

self.scrollView = [[UIScrollView alloc]initWithFrame:self.frame];

应该是:

self.scrollView = [[UIScrollView alloc]initWithFrame:self.bounds];

请注意您的打印输出如何:frame - {{0, 156}, {320, 423}}

这意味着您的滚动视图不会从顶部开始,从156px

开始

self.bounds将始终包含{{0, 0}, {<view-width>, <view-height>}}

答案 1 :(得分:0)

您的父控制器的框架可能不正确,只需使用

进行检查即可
NSLog(@"%@", NSStringFromCGRect(self.frame));

看看控制台中显示的是什么?

如果不正确,请手动设置scrollView的框架,

self.scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0,0, 320, self.frame.size.height)];

答案 2 :(得分:0)

而不是self.frame尝试self.bounds

帧是相对于superview的位置。但是界限从(0,0)

开始