【问题标题】:Image in Custom UITableViewCell moves after selection选择后自定义 UITableViewCell 中的图像移动
【发布时间】:2014-01-02 14:54:00
【问题描述】:

我有一个自定义 UITableViewCell 和一个 UIImage 和一个 UILabel(见下面的截图)。

如果我点击UITableViewCell,我会在上面添加一个复选标记,但是当复选标记可见时,UIImage 会向左移动(参见下面的屏幕截图)。

自动布局已关闭,内容模式设置为UIViewContentModeRight(通过情节提要)。

我的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    MarkerCell *cell = (MarkerCell *)[tableView dequeueReusableCellWithIdentifier:@"marker"];

    markerCategories = [[NSMutableArray alloc] init];

    for (Marker *marker in self.allMarkers) {
        BOOL isEqual = NO;
        for (NSString *string in markerCategories) {
            if ([marker.identifier isEqualToString:string]) {
                isEqual = YES;
            }
        }
        if (isEqual == NO) {
            [markerCategories addObject:marker.identifier];
        }
    }

    cell.backgroundColor = [UIColor clearColor];
    cell.opaque = NO;
    cell.backgroundView = nil;

    cell.lbMarkerName.text = markerCategories[indexPath.row];
    cell.ivIcon.image = [UIImage imageNamed:[markerCategories[indexPath.row] lowercaseString]];

    if ([markerCategories[indexPath.row] isEqualToString:@"Löschteich"]) cell.ivIcon.image = [UIImage imageNamed:@"loeschteich"];
    if (!cell.ivIcon.image) cell.ivIcon.image = [UIImage imageNamed:@"sonstige"];

    return cell;
}


   - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    MarkerCell *cell = (MarkerCell *)[tableView cellForRowAtIndexPath:indexPath];

    // handle Checkmark
    if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {
        [cell setAccessoryType:UITableViewCellAccessoryNone];

        // remove Marker(s)
        for (Marker *marker in self.allMarkers) {
            if ([markerCategories[indexPath.row] isEqualToString:marker.identifier]) {
                [markersToShow removeObject:marker];
            }
        }
    }
    else
    {
        [cell setAccessoryType:UITableViewCellAccessoryCheckmark];

        // add Marker(s)
        for (Marker *marker in self.allMarkers) {
            if ([markerCategories[indexPath.row] isEqualToString:marker.identifier]) {
                [markersToShow addObject:marker];
            }
        }
    }

    [tableView deselectRowAtIndexPath:indexPath animated:YES];

    [self printMarkers];
}

【问题讨论】:

    标签: objective-c uitableview ios7 uiimage


    【解决方案1】:

    我已经自己找到了解决问题的方法。由于显示复选标记,UIImage 通过自动调整大小移动到左侧。所以我只需要重新调整自动调整大小。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-08
      • 1970-01-01
      • 1970-01-01
      • 2012-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-03
      相关资源
      最近更新 更多