2010-06-17 69 views
3

好吧,我現在不在表格單元格中。 (我見過很多關於單元格高度的線程。)可變高度UIViews和標籤

我在視圖的頂部有一個標題和描述的詳細視圖,後面跟着一個tableView。如果描述的長度會有所不同,那麼我怎樣才能讓tableView相應地進行調整,因此它總是直接從它下面開始?

我看到蘋果在應用商店應用程序中這樣做。如果您查看應用程序描述(就好像您要購買它)一樣,它們具有應用程序描述,以及在哪裏結束滾動窗格的截圖。他們如何做這樣的文字描述不同高度?

他們是以編程的方式執行此操作還是可以使用IB中的佈局控件來執行相同的操作?

回答

1

你需要以編程方式添加表格視圖在您的視圖,並設置其框架,按您的詳細視圖的大小

1>獲得的DetailView當前幀 2>添加它的高度比增加tableview中到您的視圖

UITableView *table = [[UITableView alloc] initWithFrame:CGRectMake(initX , initY + DetailViewFrame.size.height, TableWidth, TableHeight) style:UITableViewStylePlain]; 
[view addSubView:table]; 
+0

這是有道理的。太糟糕了,你不能在IB中以某種方式做到這一點。我想我會試着弄清楚如何讓整個事情變成一個大滾動窗格。 感謝幫助。 – 2010-06-17 16:16:13

+0

謝謝...只是糾正我自己...沒有必要在X協調座標中添加寬度...我正在編輯它... – 2010-06-18 06:09:58

1

如何當它的父視圖調整大小的視圖的尺寸在IB改變佈局控件。在這種情況下,(我認爲)標籤和表視圖是同級視圖,所以你需要以編程方式進行。將標籤尺寸調整爲適合的尺寸後,找到它的底部(原點的y位置加上標籤的高度),並用它來指導放置表格視圖的位置。您可能會在-viewDidLoad或-viewWillAppear:中執行此操作,具體取決於您何時有足夠的信息進行計算。

0

我認爲你需要使用「sizeWithFont」來計算在運行時電池的高度,看到以下內容:

- (CGFloat) tableView: (UITableView *) tableView heightForRowAtIndexPath: (NSIndexPath *) indexPath 
{ 
    CGSize labelSize = CGSizeMake(200.0, 20.0); 
    if ([string length] > 0) 
    labelSize = [string sizeWithFont: [UIFont boldSystemFontOfSize: 17.0] constrainedToSize: CGSizeMake(labelSize.width, 1000) lineBreakMode: UILineBreakModeWordWrap]; 
    return 24.0 + labelSize.height; 
} 

而在「的cellForRowAtIndexPath」

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease]; 
     cell.accessoryType = UITableViewCellAccessoryNone; 
     cell.selectionStyle = UITableViewCellSelectionStyleNone; 
     cell.autoresizingMask = UIViewAutoresizingFlexibleHeight;  
    } 

cell.textLabel.text = @"Your string with variable length";    
     [cell.textLabel setFont:[UIFont boldSystemFontOfSize:12]]; 
     //[cell.textLabel setAdjustsFontSizeToFitWidth:YES]; 
     [cell.textLabel setBaselineAdjustment:UIBaselineAdjustmentAlignBaselines]; 
     [cell.textLabel setLineBreakMode:UILineBreakModeWordWrap]; 
     [cell.textLabel setNumberOfLines:0]; 
return cell; 
} 

希望這有助於你。 ..

+0

感謝您的幫助,但在這種情況下,我不在表格單元格。它基於它上面的文本標籤的高度來放置表格視圖本身。很好,但參考。 – 2010-06-17 16:16:53