2009-08-31 91 views

回答

3

我在scrollview中做了一個。我用這種方法計算了每個元素的幀大小:

- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(UILineBreakMode)lineBreakMode 

我在每個標籤後面添加了一個y大小的運行總數。最後,如果滾動視圖超過了一定的大小(我的頁面的長度),我將這個大小放到了滾動視圖中,最後增加了一點,所以它不會撞到底部。

下面是一些代碼:

int currentYPos; 
CGSize maximumSize = CGSizeMake(300, 9999); 
[scrollView setCanCancelContentTouches:NO]; 
scrollView.indicatorStyle = UIScrollViewIndicatorStyleDefault; 
scrollView.clipsToBounds = YES; 
scrollView.scrollEnabled = YES; 

scrollView.pagingEnabled = NO; 

// set the title frame size 
self.titleLabel.text = self.title; 

CGSize titleSize = [self.titleLabel.text sizeWithFont:self.titleLabel.font 
     constrainedToSize:maximumSize 
    lineBreakMode:self.titleLabel.lineBreakMode]; 

currentYPos = titleSize.height + 20; 

CGRect titleFrame = CGRectMake(10, 0, 300, currentYPos); 
self.titleLabel.frame = titleFrame; 

注意,許多titleLabel屬性分別設置在IB的標籤上。

+0

所以你建立的視圖是在IB完成的,但是你使用代碼來動態調整它的大小? – SonnyBurnette 2009-08-31 11:14:27

+0

是的,但那只是因爲我從IB開始,後來發現如何格式化視圖。你可以在Xcode中設置你自己的標籤,唯一的區別是你必須在代碼中指定他們的字體和行高等。 – 2009-08-31 13:24:44