在OS 3.0中的UITableViewCell中更改左UIImageView的位置

时间:2009-07-22 10:53:20

标签: iphone cocoa-touch

我有一个带有标准UITableViewCells的UITableView,它包含左侧的图像。我按如下方式设置单元格的图像:

UIImage *leftIcon = [UIImage imageNamed:@"myImage.png"];
cell.imageView.image = leftIcon;

这很好用。但是,根据应用程序运行的iPhone OS,外观会有所不同。直到2.2.1,图像位于距左边界约11个像素处。在3.0中,图像直接定位在左边框上,没有任何空间。

我的目标是将图像定位在距离单元格左侧大约11px的位置。我尝试了以下但没有取得任何成功:

UIImage *leftIcon = [UIImage imageNamed:@"myImage.png"];

//trying to change x coordinate of the frame of the UIImageView
CGRect tmpRect = cell.imageView.frame;
tmpRect.origin.x = 10;
cell.imageView.frame = tmpRect;

cell.imageView.image = leftIcon;

我可以想到两种可能的解决方案:

1。)在左侧使用自定义UIImageView实现我的自定义UITableViewCell。

2。)使用Photoshop为myImage.png添加一个11px透明边框:)

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

这有点像黑客,但你可以从UITableViewDelegate缩进你的单元格。

- (NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath {
    return 1;
}

这样可以将UITableViewCell的{​​{1}}推过约10分。

答案 1 :(得分:0)

在我看来,在iPhone世界中解决这类问题最简单的方法就是创建自定义类。另外,考虑为所述类创建一些函数,如

-(void)redrawAtDefaultCoordinates;
-(void)redrawAtCoordinates(NSInteger x, NSInteger y);

为每个自定义类,以便您可以简单地调整它们的显示位置。

至于你的实际问题,我会说尝试进入单元格使用的矩形,然后找出你需要的相对几何形状。 iPhone对于你想放置东西的位置所做的猜测做得相当不错,但如果猜错了,你总是希望至少有一些东西要去。