2012-01-15 93 views
0

在我的项目中,我有一个简单的UIViewUIScrollView子视图。我想基础上,UIScrollView中的内容与下面的代码来计算高度:计算UIScrollView的高度

enter image description here

file.h

@interface ScrollViewController : UIViewController { 
IBOutlet UILabel* topLabel; 
IBOutlet UILabel* bottomLabel; 
    IBOutlet UIScrollView * scroller; 
} 

@property(nonatomic,retain) IBOutlet UIScrollView *scroller; 

file.m

- (void)viewDidLoad { 
    [scroller setScrollEnabled:YES]; 
    CGFloat scrollViewHeight = 0.0f; 
    for (UIView* view in scroller.subviews) 
    { 
     scrollViewHeight += view.frame.size.height; 
    } 
    // print value 88.000000 
    NSLog(@"%f", scrollViewHeight); 
    [scroller setContentSize:CGSizeMake(320, scrollViewHeight)]; 
    [super viewDidLoad]; 
} 

我不不知道代码为什么不起作用。

回答

0

好,有两件事情。首先,在该方法的开始处设置一个断点,并一次一行地遍历代码,以查看它在做什么。

第二,根据您的视图布局,特别是如果您有彼此相邻的视图,则该代码可能无法工作。如果子视图之间有垂直边距/空间,它也不起作用。相反,当循环显示子视图时,您可能会尝试以下代码:

for (UIView *view in scroller.subviews){ 
    if (scrollViewHeight < view.frame.origin.y + view.frame.size.height) scrollViewHeight = view.frame.origin.y + view.frame.size.height; 
} 

这应该会为您提供正确的高度。

+0

水平空间会有什么不同? – 2012-01-15 16:46:15

+0

我试过这段代码,但没有工作 – Maurizio 2012-01-15 16:48:56

+0

对不起,可能不太清楚。我指的是垂直方向上的两个场之间的空间高度,这两个场之间的距离并不正确......两个场之间的垂直边界。我应该说垂直空间,我会更新答案。 – 2012-01-15 16:50:06

0

什么是不工作的高度或日志陈述的设置?

这不是如何打印浮动,%@是打印对象的格式说明符。退房String Format Specifiers

你需要它

NSLog(@"%f", scrollViewHeight); 
+0

谢谢,现在打印此值:88.000000 – Maurizio 2012-01-15 16:46:12