我需要像这个截图一样的表格布局
我正在使用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];
答案 0 :(得分: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;
}
答案 1 :(得分: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。
答案 2 :(得分:0)
使用此:cell.textLabel.textAlignment = ALIGN_CENTER;
&
#ifdef __IPHONE_6_0
#define ALIGN_CENTER NSTextAlignmentCenter
#else
#define ALIGN_CENTER UITextAlignmentCenter
#endif
答案 3 :(得分: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;
}
答案 4 :(得分: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];
}