0

我需要一个像这个屏幕截图这样的表格布局

我正在使用UIStoryboard和 ARC

在此处输入图像描述 屏幕:1

但我越来越像了

在此处输入图像描述 屏幕:2

滚动表格后,它会根据需要变成第一个屏幕,但最初类似于屏幕 2。

我在cellForRowAtIndexPath方法中的代码是

    UILabel *titleLabel = (UILabel *) [cell viewWithTag:1];
titleLabel.backgroundColor  =[UIColor whiteColor];

if (indexPath.row % 2) {
    NSLog(@"Odd Cell");
    [titleLabel setFrame:CGRectMake(100.0f, 10.0f, 200.0f, 20.0f)];
} else {
    NSLog(@"Even Cell");
    [titleLabel setFrame:CGRectMake(20.0f, 10.0f, 200.0f, 20.0f)];
}

titleLabel是通过 IB 在单元格上的标签,并且具有标签:1

我必须相应地设置标签的框架,然后在其中设置文本而不是文本对齐。

这就是为什么我设置titleLabel.backgroundColor =[UIColor whiteColor];

4

5 回答 5

1

试试这个...它的工作

- (int)numberOfSectionsInTableView:(UITableView *) tableView {
    return 1;
}

- (int) tableView:(UITableView *) tableView numberOfRowsInSection:(NSInteger)section {
    return 20;
}

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

    UITableViewCell *cell;

        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MainCell"];

    UILabel *titleLabel = (UILabel *) [cell viewWithTag:1];
    titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 200, 30)];

    CGRect labelPosition;
    if ((indexPath.row+1) % 2) {
        NSLog(@"Odd Cell");

        titleLabel.text = [NSString stringWithFormat:@"Odd Cell - %d", (indexPath.row+1)];
        titleLabel.backgroundColor = [UIColor redColor];
    } else {
        NSLog(@"Even Cell");
        labelPosition = titleLabel.frame;
        labelPosition.origin.x = 110;
        titleLabel.frame = labelPosition;
        titleLabel.text = [NSString stringWithFormat:@"Even Cell - %d", (indexPath.row+1)];
        titleLabel.backgroundColor = [UIColor blueColor];
    }
    titleLabel.textColor = [UIColor whiteColor];

    [cell addSubview:titleLabel];

    return cell;

}

下载测试项目

于 2013-08-22T10:53:35.153 回答
1

我用一个简单的基本思想实现了这一点,代码是

    UILabel *leftTitleLabel = (UILabel *) [cell viewWithTag:1];
leftTitleLabel.backgroundColor  =[UIColor whiteColor];

UILabel *rightTitleLabel = (UILabel *) [cell viewWithTag:2];
rightTitleLabel.backgroundColor  =[UIColor whiteColor];


if (indexPath.row % 2) {
    leftTitleLabel.hidden = YES;
    rightTitleLabel.hidden = NO;
    rightTitleLabel.text = @"Right Cell";
} else {
    rightTitleLabel.hidden = YES;
    leftTitleLabel.hidden = NO;
    leftTitleLabel.text = @"Left Cell";
}

现在在所需位置的单元格上有 2 个标签并设置标签 1 n 2。

于 2013-08-22T10:57:25.003 回答
0

您可以创建自定义单元格。并重新实现 layoutSubview 功能。类似的东西

@synthesize padding;
-(void)layoutSubview {
    [super layoutSubview];

    [self.titleLabel setFrame:CGRectMake(padding, 10.0f, 200.0f, 20.0f)];
}

和 cellForRowAtIndexPath 函数:

if (indexPath.row % 2) {
    NSLog(@"Odd Cell");
    [cell setPadding:100.f];
} else {
    NSLog(@"Even Cell");
    [cell setPadding:20.f];
}
于 2013-08-22T09:41:53.243 回答
0

使用这个:cell.textLabel.textAlignment = ALIGN_CENTER;&

#ifdef __IPHONE_6_0
#define ALIGN_CENTER NSTextAlignmentCenter
#else
#define ALIGN_CENTER UITextAlignmentCenter
#endif
于 2013-08-22T09:21:20.733 回答
0

在 cellForRowAtIndexPath 方法中

    UILabel *titleLabel = (UILabel *) [cell viewWithTag:1];
titleLabel.backgroundColor  =[UIColor whiteColor];

if (indexPath.row % 2) {
    NSLog(@"Odd Cell");
    titleLabel.textAlignment = NSTextAlignmentRight;
} else {
    NSLog(@"Even Cell");
    titleLabel.textAlignment = NSTextAlignmentLeft; 
}
于 2013-08-22T09:28:54.567 回答