2013-01-04 98 views
1

我試圖將兩個UILabel在同一垂直軸UITableViewCell內的寬度,並讓他們佔據細胞的寬度的50%,當細胞是分組表格單元格。計算一個分組的tableview細胞

我試過self.frame.size.width/2,但寬度self.frame.size.width看起來像整個單元格的寬度,就好像它不是分組單元格一樣。換句話說,它似乎是整個屏幕的寬度,全屏顯示。

我還將self.frame.size.widthself.contentView.frame.size.width進行比較,兩者看起來都是一樣的,並不是實際寬度的分組單元格,我不相信。

當我初始化UILabel與指定的幀,並指定x軸0,標籤不地方本身所分組的細胞,其爲大的左邊緣!這就是我想要的。

但是,對於第二個UILabel,我希望在第一個標籤的右側,在同一水平軸上,我不知道如何計算標籤框架的x軸的起始位置。

同樣,我不知道如何計算這些標籤的寬度,因爲我似乎無法獲得分組單元格的寬度。

我覺得必須有一種方法來獲得確切的寬度,因爲對於第一個標籤,給出標籤的框架x軸爲0將它放在單元格的邊緣,這正好符合我的需要。所以我需要在內部,這個代碼也知道那個單元的寬度。

有人知道嗎?謝謝。

+0

爲了您的放置'label2'旁邊'label1'問題,把'label1.frame.size.width'到位的__X-axis__的'label2'的框架。 – Breakpoint

+0

但是,我將如何使label1的一半寬度的單元格? – Ryan

+0

檢查'cell.contentView.frame.size.width'是否有效。還要將標籤添加到'cell.contentView',而不僅僅是'cell'。 – Breakpoint

回答

0

好吧,我想出了一個很好的方法來實現這一目標。如果您繼承了UITableViewCell並且想要調整單元的子視圖,那麼您需要在layoutSubviews:方法內執行這些計算和幀調整。在此方法的內部,單元格的contentView將成爲預期的寬度,即使在使用分組單元格時也是如此。下面是我的layoutSubviews函數看起來像...

- (void)layoutSubviews { 

    [super layoutSubviews]; 

    // half of the cell's content view width 
    CGFloat halfCellWidth = self.contentView.frame.size.width/2; 

    // the dimensions of the message label, primarily for the height 
    CGSize mesageLabelDimensions = [_message.text sizeWithFont:[UIFont systemFontOfSize:12] 
              constrainedToSize:CGSizeMake(self.contentView.frame.size.width - (LEFT_RIGHT_MARGIN * 2), 500.0)]; 

    // adjust the frames of the cell labels 
    _source.frame = CGRectMake(LEFT_RIGHT_MARGIN, TOP_BOTTOM_MARGIN, halfCellWidth - LEFT_RIGHT_MARGIN, LABEL_LINE_HEIGHT); 
    _timestamp.frame = CGRectMake(halfCellWidth, TOP_BOTTOM_MARGIN, halfCellWidth - LEFT_RIGHT_MARGIN, LABEL_LINE_HEIGHT); 
    _message.frame = CGRectMake(LEFT_RIGHT_MARGIN, LABEL_LINE_HEIGHT + (TOP_BOTTOM_MARGIN * 2), mesageLabelDimensions.width, mesageLabelDimensions.height); 

}