【发布时间】:2012-07-25 13:32:26
【问题描述】:
我需要计算 UIScrollView 中内容的高度。
我将一个空的 UIScrollView 放到 XCode Storyboard 中,并使用以下代码给它一个自定义类:
- (id)initWithCoder:(NSCoder *)decoder
{
self = [super initWithCoder:decoder];
if (self) {
int i;
for (i = 0; i < [self.subviews count]; i++) {
UIView *view =[self.subviews objectAtIndex:i];
NSLog(@"sub view %@ x:%f, y:%f, w:%f, h:%f", [view class], view.frame.origin.x, view.frame.origin.y, view.frame.size.width, view.frame.size.height);
}
}
return self;
}
对于一个空的 UIScrollView,这是记录到控制台的内容:
sub view UIImageView x:233.000000, y:121.000000, w:7.000000, h:7.000000
sub view UIImageView x:233.000000, y:121.000000, w:7.000000, h:7.000000
这些图片是什么?他们抛弃了我的计算,因为他们总是低于我的内容。
【问题讨论】:
-
我猜是滚动条,但我没有什么可以支持该声明的...另外,
NSStringFromCGRect(view.frame);下次打印框架时会为您节省一些输入 -
我也认为它会是滚动条,但不知道如何证明这一点。感谢 NSStringFromCGRect :)
-
好吧,如果你用
for(UIView *subview in [view subviews]) { [subview removeFromSuperview]; }删除所有子视图,你会注意到滚动条消失了。 -
您应该跟踪要添加到滚动视图的内容并遍历它以进行计算,而不是通过滚动视图的子视图。你永远不知道 Apple 会在幕后做些什么奇怪的事情(比如添加滚动条)。
-
Anshu,如果我在代码中添加内容我完全同意,但是我正在使用通过 XCode 故事板添加内容的滚动视图,因此它具有现有内容。缺少标记/标记情节提要中的每个项目,我不知道如何区分我添加的项目和 Apple 添加的项目。
标签: objective-c xcode ios5 uiscrollview storyboard