计算UIScrollView的高度

时间:2012-01-15 16:25:27

标签: iphone objective-c ios scrollview

在我的项目中,我有一个简单的UIView,其中包含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];
}

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

2 个答案:

答案 0 :(得分:0)

什么不起作用高度或日志声明的设置?

这不是你打印浮点数的方式,%@是打印对象的格式说明符。查看String Format Specifiers

你需要什么

NSLog(@"%f", scrollViewHeight);

答案 1 :(得分: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;
}

这可以让你获得正确的身高。