2010-10-25 75 views
0

我有一個的UITableView,它試圖看起來像一個網格:這是我通過添加的UILabel ** S作爲** cell.contentView子視圖模仿四列。 這些「列」中的三個具有固定的寬度,旋轉時我想自動調整最左邊的列的大小以填充所有可用空間(屏幕寬度減去另外三列的總寬度)。編程自動調整大小的UITableViewCell包含幾個子視圖

單元初始化代碼如下:

#define kCellWidth ((UIInterfaceOrientationIsLandscape(self.interfaceOrientation)) ? 1024 : 768) 
#define kCellHeight 60 

#define kXOffset 10 
#define kYOffset 10 
#define kContentHeight (kCellHeight - 2*kYOffset) 

#define kTypeWidth 125 
#define kNumberWidth 100 
#define kDateWidth 90 
#define kLabelWidth (kCellWidth - (2*kXOffset + kTypeWidth + kNumberWidth + kDateWidth)) 

#define kTypeOffset (kXOffset + kLabelWidth) 
#define kNumberOffset (kTypeOffset + kTypeWidth) 
#define kDateOffset (kNumberOffset + kNumberWidth) 

#define kLabelTag 1 
#define kTypeTag 2 
#define kNumberTag 3 
#define kDateTag 4 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellIdentifier]; 

if (cell == nil) { 
    cell = [self cellWithFrame:CGRectMake(0, 0, kCellWidth, kCellHeight) 
     identifier:kCellIdentifier]; 
} 

Clazz *obj = [self.source objectAtIndex:indexPath.row]; 
((UILabel *) [cell viewWithTag:kLabelTag]).text = obj.label; 
((UILabel *) [cell viewWithTag:kTypeTag]).text = obj.type; 
((UILabel *) [cell viewWithTag:kNumberTag]).text = obj.number; 
((UILabel *) [cell viewWithTag:kDateTag]).text = obj.date; 

return cell; 
} 

-(UITableViewCell *) cellWithFrame:(CGRect)frame identifier:(NSString *)identifier { 
UITableViewCell *cell = [[[UITableViewCell alloc] initWithFrame:frame 
       reuseIdentifier:kCellIdentifier] autorelease]; 

[cell.contentView addSubview:[self labelForTag:kLabelTag 
      withFrame:CGRectMake(kXOffset, kYOffset, kLabelWidth, kContentHeight)]]; 
[cell.contentView addSubview:[self labelForTag:kTypeTag 
      withFrame:CGRectMake(kTypeOffset, kYOffset, kTypeWidth, kContentHeight)]]; 
[cell.contentView addSubview:[self labelForTag:kNumberTag 
      withFrame:CGRectMake(kNumberOffset, kYOffset, kNumberWidth, kContentHeight)]]; 
[cell.contentView addSubview:[self labelForTag:kDateTag 
      withFrame:CGRectMake(kDateOffset, kYOffset, kDateWidth, kContentHeight)]]; 

return cell; 
} 

-(UILabel *)labelForTag:(int)tag withFrame:(CGRect)frame { 
UILabel *label = [[UILabel alloc] initWithFrame:frame]; 
label.tag = tag; 

switch (tag) { 
    case kNumberTag: 
    case kDateTag: 
    label.textAlignment = UITextAlignmentCenter; 
    break; 
    default: 
    break; 
} 

return [label autorelease]; 
} 

的問題是:

  • 我可以用autoresizingMask和或contentMode屬性發揮實現這種類型的行爲?
  • 如果是,應更改哪些對象的屬性以及哪些值?

我已經嘗試了一下,但由於我是一名iPad編程新手,一直無法找到解決方案。提前致謝!

回答

0
CGRect frame = self.tableView.frame; 
    CGFloat height1=120.0; 
    [tableView setRowHeight:height1]; 
    self.tableView.frame = frame; 

這樣你就可以設置rowHeight的編程

相關問題