2012-01-15 102 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