请抽出时间,因为这是一个很长的解释
我有一个UIViewController
由 aUIButton
和 a组成的 a ,它在按钮的事件中UITableView
加载不同类型的s和UITableViewCell
标识符。我正在使用故事板。Cell1
Cell2
touchUpInside
两个电池的隔板都是定制的。
Cell1
有一个分隔符,占据单元格的整个宽度和单元格底部的 1 个像素高度。
而Cell2
有一个分隔符,它与单元格的偏移量为 5 个像素,左右都有。
每次单击外部的按钮时tableView
,都会tableViewCell
根据单元格标识符交换 s。
最初是tableView
占据了Cell1的整个宽度,viewController
由Cell1组成,但是点击了按钮,tableViewCell
s变成了Cell2并改变了frame tableView
,宽度减少了10,x-origin增加了5。
但是当这种情况发生时,分隔符Cell2
距离右侧的单元格 5 像素,但左侧的距离为 5 像素。这发生在所有Cell2
加载数据的单元格中,并且没有数据的单元格会适当地更改框架。
但之后的单元格的宽度为Cell1
(较大的宽度)
-(void)setSeperatorStyleForTableView :(UITableViewCell *)cell //this is called in cellForRowAtIndex
{
//cell- type of cell(Cell1 or Cell2)
CGRect seperatorFrame;
UIImageView *seperatorImage;
seperatorFrame = [self setSeperatorFrame:cell];
if(firstCellToBeLoaded)//BOOL used to change the button text and load appropriate cells
{
seperatorImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"table_row
2.png"]];
}
else
{
seperatorImage = [[UIImageView alloc] initWithImage:[UIImage
imageNamed:@"table_row.png"]];
}
seperatorImage.frame = seperatorFrame;
seperatorImage.autoresizingMask = YES;
[cell.contentView addSubview:seperatorImage];
}
//set the customized separator frame
-(CGRect)setSeperatorFrame :(UITableViewCell *)cell
{
CGRect seperatorFrame;
seperatorFrame.size.height = 1.0;
seperatorFrame.origin.y = cell.frame.origin.y + (cell.frame.size.height - 1.0);
if(firstCellToBeLoaded)
{
seperatorFrame.origin.x = cell.frame.origin.x ;
seperatorFrame.size.width = cell.frame.size.width;
}
else
{
seperatorFrame.origin.x = cell.frame.origin.x + 5.0;
seperatorFrame.size.width = cell.frame.size.width -10.0;
}
return seperatorFrame;
}