我的图片大小CGRectMake(100,70,50,50)
位于cellForRowAtIndexPath
内。当单元格为奇数
代码是:
if(indexPath.row %2)
{
CGRectMake(200,70,50,50)
}
else
{
CGRectMake(100,70,50,50)
}
第一次加载TableView
时,它工作正常,但是当我反复滚动时,帧大小的图像显示位置错误。它变化很有趣,我不知道为什么。
你能帮助我吗
非常感谢。
答案 0 :(得分:0)
您已在UIImageView
子视图中设置了框架:
if(indexPath.row %2) {
cell.yourImageView.frame = CGRectMake(200,70,50,50)
} else {
cell.yourImageView.frame = CGRectMake(100,70,50,50)
}
答案 1 :(得分:0)
你可以按照以下方式去做。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UIImageView * imageView;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
if(indexpath.row%2 == 0)
imageView = [[UIImageView alloc] initWithFrame:CGRectMake(200, 70, 50, 50)];
else
{
imageView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 70, 50, 50)];
[cell.contentView addSubview:imageView];
imageView.tag=11;
[imageView release];
}
}
else
{
imageView = (UIImageView*)[cell.contentView viewWithTag:11];
}
// here are couple of other statements
...............
}
答案 2 :(得分:0)
就个人而言,我会创建一个自定义表格单元格并执行以下操作:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"ImageCell";
ImageCell *cell = (ImageCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
[cell configureWithRow:indexPath.row];
}
然后在您的自定义表格单元格中,为您的可调整大小的图片视图创建一个IBOutlet并添加一个方法:
-(void)configureWithRow:(NSInteger)row
{
if(indexPath.row %2)
{
self.resizableImageView.frame = CGRectMake(200,70,50,50)
}
else
{
cell.resizableImageView.frame = CGRectMake(100,70,50,50)
}
}
这有几件事
您不必检查nil单元格,因为只要标识符与Storyboard中的标识符匹配且您的视图控制器是UITableViewController,就可以保证将单元格返回dequeueReusableCellWithIdentifier。
< / LI>您将单元格配置的逻辑移动到自定义表格视图单元格,这是它应该在的位置。视图控制器不应该关心单元格中图像的大小。