在UITableView中设置帧大小图像

时间:2013-07-26 17:39:25

标签: ios uitableview

我的图片大小CGRectMake(100,70,50,50)位于cellForRowAtIndexPath内。当单元格为奇数

时,我需要更改帧大小的图像

代码是:

if(indexPath.row %2)
{
  CGRectMake(200,70,50,50)
}
else
{
  CGRectMake(100,70,50,50)
}

第一次加载TableView时,它工作正常,但是当我反复滚动时,帧大小的图像显示位置错误。它变化很有趣,我不知道为什么。

你能帮助我吗

非常感谢。

3 个答案:

答案 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)
    }
}    

这有几件事

  1. 您不必检查nil单元格,因为只要标识符与Storyboard中的标识符匹配且您的视图控制器是UITableViewController,就可以保证将单元格返回dequeueReusableCellWithIdentifier。

    < / LI>
  2. 您将单元格配置的逻辑移动到自定义表格视图单元格,这是它应该在的位置。视图控制器不应该关心单元格中图像的大小。