如何将UIImageView移近UITableView的左边缘?

时间:2013-06-12 22:22:37

标签: ios uitableview

我有这个tableview:

tableview

这些都是自定义 - 静态单元格。

但是在sim / device中它看起来像这样:

enter image description here

我像这样填充单元格:

#pragma mark - TableView Cell Methods
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {


    UITableViewCell *cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MyIdentifier"] autorelease];


    switch (indexPath.row) {
        case 0:
            cell.imageView.image = [UIImage imageNamed:@"Usar mi ubicacion actual.jpg"];
            break;
        case 1:

            break;
        case 2:
            [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];

            self.myCity = [[UITextField alloc] initWithFrame:CGRectMake(20,10,200,35)];
            self.myCity.text = @"Seleccione su ciudad...";
            self.myCity.borderStyle = UITextBorderStyleRoundedRect;
            [cell.contentView addSubview:self.myCity];                
            //Call UIPicker
            break;
        case 3:
            cell.imageView.image = [UIImage imageNamed:@"Farmacias-con-Autoservicio.png"];
            break;
        case 4:
            cell.imageView.image = [UIImage imageNamed:@"Farmacias-abiertas-en-este-momento.png"];
            break;
        case 5:
            break;
        default:
            break;
    }


    return cell;
}

我知道我需要将cell.imageView的帧重置为更靠近左边缘的东西,例如CGRectMake(5,5,width,height)。要做到这一点,我需要继承我所做的UITableViewCell(MyCustomCell)并将此代码添加到它:

- (void)layoutSubviews {
    [super layoutSubviews];
    self.imageView.frame = CGRectMake(5.0f , 5.0f, 175.0f, 40.0f);
}

现在这将使每个单元格开始靠近左边缘。但是我怎么做到1:分隔符& 2:UIPicker细胞不受此影响?我可以将这些单元格定义为UITableViewCells和其他MyCustomCell吗?

2 个答案:

答案 0 :(得分:2)

- 首先,如果您创建自定义单元格,则不应该让UITableViewController拥有自定义单元格内部的属性...(特别是对于案例0:在switch方法内部)该图像应该包含在你的customTableViewCell类。

即。它将是cell.locationButtonImageView.image ....等

这是我直接看到的最引人注目的事情。这是面向对象编程的整个要点。包含属性的项目(在本例中为图像)几乎在所有情况下都应该是它的所有者。在某些情况下,您从superView传递属性,但这似乎不是这里的情况。解决这个问题,它应该可以解决其他一些问题。

- 第二:如果您遇到的问题是图片仅在您选择项目后才会显示,则很可能是因为它仅设置为某个UIControlState,无论是正常,选择,禁用等。

至于问题的标题:你只需要移动图像的框架,使其在UITableViewCell内更加左对齐。您可以通过修改框架并使用CGRect创建新的CGRectMake(x,y,width,height),在代码中动态执行此操作。或者甚至更简单,您只需在Storyboard中设置自定义UITableViewCell原型内的位置。

答案 1 :(得分:0)

好吧,当我在侧栏中发现这个时,我就要创建一个自定义单元格xib和所有内容:

Indentation

最初设置为1.我只是将其设置为0并且瞧!