滚动tableview时,UIImageView的内容模式会发生变化

时间:2018-01-30 10:56:07

标签: ios objective-c uiimageview sdwebimage uiviewcontentmode

我有一个包含自定义SlackTextViewController的表格视图(UITableViewCell),其中包含UIImageViewUITextView。我使用SDWebImage来缓存和设置图像。

这是我的cellForRowAtIndexPath

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

    static NSString *identifier = @"CommentsCell";

    CommentsCell *cell =(CommentsCell *) [self.tableView dequeueReusableCellWithIdentifier:identifier];

    if (!cell) {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:identifier owner:self options:nil];
        cell = [nib objectAtIndex:0];
    }        

    commentsModel =(CommentsModel *)commentsListArray[indexPath.row];

    if (commentsModel.hasImage) {    
        cell.imageHeight.constant=150;
        cell.photoImageView.hidden = NO;

        NSString *imageUrl = commentsModel.commentImage;
        [cell.photoImageView setShowActivityIndicatorView:YES];
        [cell.photoImageView setIndicatorStyle:UIActivityIndicatorViewStyleGray];

        cell.photoImageView.contentMode = UIViewContentModeScaleAspectFill;
        [cell.photoImageView sd_setImageWithURL:[NSURL URLWithString:imageUrl]];    
    } else  {
        cell.imageHeight.constant=0;
        cell.photoImageView.hidden = YES;
        cell.textview.text=commentsModel.comments;
        [cell.textview sizeToFit];                
    }

    cell.transform = self.tableView.transform;
    return cell

}

首次打开视图控制器时,imageView的内容模式以某种方式设置为ScaleAspectFit,当我向上和向下滚动几次时,内容模式已正确设置到ScaleAspectFill

初始内容模式状态:

Initial content mode state

向上和向下滚动一些:

After scrolling up and down some

发生另一件奇怪的事情,当我提出UIAlertController时,imageView的内容模式会突然激活到ScaleAspectFill,如下面的视频所示:< / p>

https://www.youtube.com/watch?v=OT3bUR4CR5c&feature=youtu.be

  • 我没有意外地将代码中的内容模式更改为ScaleAspectFit
  • 我检查了视图层次结构,看到imageView的宽度和高度没有变化,我没有在任何地方更改它的框架。
  • 我尝试在自定义单元格的prepareForReuse方法中设置内容模式。
  • 我尝试在主线程中设置图像。

以上都没有解决问题。任何帮助,将不胜感激。感谢。

0 个答案:

没有答案