UIImageView意外地改变了大小

时间:2014-02-15 19:15:10

标签: ios objective-c uitableview uiimageview

我有UITableView单元格上有图像。我正在使用故事板,并将UIImageView连接为插座并将其命名为imageView。我得到的图像有不同的大小(我通过URL下载)。但是当桌子显示有时图像显示的尺寸不正确(它假设是66x66宽度和高度的正方形,但在很多情况下,正方形更大,或者它实际上有更宽的宽度)。

显然我希望UIImageView的边界稳定。我的代码是单元格:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    UILabel *labelText = (UILabel *)[cell viewWithTag:1000];
    labelText.text = [[self.listOfPlaceDetails objectAtIndex:indexPath.row] objectForKey:@"name"];

    if (cell == nil){
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    [cell.imageView setImageWithURL:[NSURL URLWithString:[[self.listOfPlaceDetails objectAtIndex:indexPath.row]objectForKey:@"imageFirst"]] placeholderImage:[UIImage imageNamed:@"dashie.png" ]completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType){

        UIImage *resizedImage = [image resizedImageWithBounds:CGSizeMake(66, 66)];
        UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];


        cell.imageView.layer.cornerRadius = cell.imageView.bounds.size.width /2.0f;
        cell.imageView.clipsToBounds = YES;
        cell.separatorInset = UIEdgeInsetsMake(0, 82, 0, 0);

       cell.imageView.image = resizedImage ;


    }];




    cell.imageView.contentMode = UIViewContentModeScaleAspectFit;

return cell;
}

请解释我发生了什么以及如何解决这个问题,任何建议都将不胜感激,谢谢!

2 个答案:

答案 0 :(得分:1)

您正在使用标准的UITableViewCell类并尝试更改其imageView属性。不是您在Storyboard上创建的单元格。

您应该仔细阅读本教程Storyboards Tutorial in iOS 7: Part 1。 你有兴趣:

  1. 设计自己的原型单元
  2. 使用单元格的子类
  3. 我建议使用UITableViewCell问题的子类。

答案 1 :(得分:1)

添加新的imageView并设置图像。我建议你创建uitablviewCell的子类,并将imageView添加为插座视图

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *CellIdentifier = @"Cell";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

        UILabel *labelText = (UILabel *)[cell viewWithTag:1000];
        labelText.text = [[self.listOfPlaceDetails objectAtIndex:indexPath.row] objectForKey:@"name"];

        if (cell == nil){
            cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        UIImageView *imgView = [[UIImageView alloc] initWithFrame:yourFrame];
        imgView.contentMode = UIViewContentModeScaleAspectFit;
        [cell addSubview:imgView];
        imgView.tag = 7;
        }

       UIImageView *img = (UIImageView*)[cell viewWithTag:7];
       UIImage *resizedImage = [image resizedImageWithBounds:CGSizeMake(66, 66)];
       img.imqge = resizedImage