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編程新手,一直無法找到解決方案。提前致謝!