我正在以编程方式添加滚动,但由于某种原因它没有从一开始就开始
Posted
技术标签:
【中文标题】我正在以编程方式添加滚动,但由于某种原因它没有从一开始就开始【英文标题】:I am adding a scroll programatically, but for some reason it doesn't start at the start 【发布时间】:2014-03-20 10:56:02 【问题描述】:我正在以编程方式添加一个滚动,但由于某种原因它没有从一开始就开始。
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
【问题讨论】:
什么是 NSLog(@"%@", NSStringFromCGRect(self.frame)) ? 而不是 self.frame 尝试 self.bounds 【参考方案1】:试试self.bounds
,而不是self.frame
。
Frame 是相对于 superview 的位置。但边界从 (0,0) 开始
【讨论】:
【参考方案2】:我猜是这样的:
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>
【讨论】:
【参考方案3】:可能是您的父控制器的框架不正确,只需使用
进行检查NSLog(@"%@", NSStringFromCGRect(self.frame));
然后看看控制台显示什么?
如果不合适就手动设置scrollView的frame,
self.scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0,0, 320, self.frame.size.height)];
【讨论】:
这应该是评论而不是答案,请删除它或添加可以回答问题的内容 @SimonMcLoughlin - 现在检查.. 这不是评论 :) 谢谢队友 :)以上是关于我正在以编程方式添加滚动,但由于某种原因它没有从一开始就开始的主要内容,如果未能解决你的问题,请参考以下文章