UITableViewCell具有图像自定义大小

时间:2011-10-31 10:18:42

标签: iphone ios xcode uiimageview

我正在通过一个简单的

将图像加载到UITableView中
cell.imageView.image = [UIImage imageNamed:@"prem.jpg"]; 

然而,我从有限的时间学习xcode的东西通常都不容易!我想让图像在那里占据大约280宽和150高的图像的全尺寸。从谷歌搜索我可能要建立一个自定义单元格并将图像放在那里,然后加载该自定义单元格?我之前没有做过这样的事情,加载一张图片似乎有点烦人。还有其他选择吗?

为了放入上下文,我在tableview顶部有3个部分是图像,另外两个是从XML文件加载的数组。如果我做一个自定义单元格,我必须进行单独的xml调用才能获得图像URL,所以我真的想在可能的情况下避免使用它吗?

真的在寻找你能提供的任何指针。非常感谢

汤姆

编辑:cellforrowindexpath as requsted:

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

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
    }

    if(indexPath.section == 0)


        cell.imageView.image = [UIImage imageNamed:@"prem.jpg"];




    if(indexPath.section == 1)

        cell.textLabel.text = [arryTableData objectAtIndex:indexPath.row];


    else if(indexPath.section == 2)
        cell.textLabel.text = [arryTableActions objectAtIndex:indexPath.row];

    return cell;


}

2 个答案:

答案 0 :(得分:6)

无需创建自定义单元子类。我假设您在第0部分中有一个单元格,在第1部分和第2部分中有可变数量的单元格。

您应该在第0部分为您的单元格使用不同的单元格重用标识符,因为它包含图像视图而其他部分没有 - 当这些单元格被回收时,这将显示在后面的部分中。

我会尝试这样的事情:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{      
    static NSString *CellIdentifierText = @"TextCell";
    static NSString *CellIdentifierImage = @"ImageCell";

    if (indexPath.section == 0)
    {
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifierImage];
        // I am assuming this image never changes and there is one row in this section! If it does change, use viewWithTag to get hold of the image view.
        if (cell == nil) 
        {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifierImage] autorelease];
                   UIImageView *myImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,250,180)];              
                   myImageView.tag = 1;
             myImageView.image = [UIImage imageNamed:@"prem.jpg"];
            [cell addSubview:myImageView];
                       [myImageView release];
        }
        return cell;
    }
    else
    {
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifierText];
        if (cell == nil) 
        {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifierText] autorelease];
        }      
        if(indexPath.section == 1)          
            cell.textLabel.text = [arryTableData objectAtIndex:indexPath.row];       
        else if(indexPath.section == 2)         
            cell.textLabel.text = [arryTableActions objectAtIndex:indexPath.row];      
        return cell;   
    }
}   

确保将图像添加到新创建的图像视图中,并且不是 cell.imageView,因为后者是一个只读属性,它位于左侧,我不确定你可以调整它的大小。

您还需要设置单元格的高度,因为它高于标准。这将在tableView:heightForRowAtIndexPath:委托方法中。

答案 1 :(得分:1)

您可以使用customCells.Means获取图像视图(无论您想要的大小。)。并将其添加到cellforIndexpath方法的单元格中。