在我的项目中,我有一个简单的UIView
,其中包含UIScrollView
子视图。我试图根据UIScrollView
中的内容使用以下代码计算高度:
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 :(得分: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;
}
这可以让你获得正确的身高。