2

我正在使用第三方库HJCacheClasses来异步加载图像。这是相同的代码。这非常简单:

NSMutableString *url = @"my url";
    HJManagedImageV *asyncImageView = [[HJManagedImageV alloc] initWithFrame:frame];
    [asyncImageView setBackgroundColor:[UIColor grayColor]];
    [asyncImageView showLoadingWheel];
    [asyncImageView setContentMode:UIViewContentModeScaleAspectFill];
    [asyncImageView.imageView setContentMode:UIViewContentModeScaleAspectFill];
    asyncImageView.url = [NSURL URLWithString:url];

    [self.imageManager manage:asyncImageView];
    [the_pScrollView addSubview:asyncImageView];

一切正常,除了图像居中并且它没有根据视图的大小(全屏大小)进行拉伸/拟合。我知道图像很小,但我需要使其适合视图以填充视图。但 setContentMode 都没有工作。

4

2 回答 2

4

如果您查看 HJManagedImageV 类的源代码,您会注意到作者将 HJManagedImageV 实例的 imageView 硬编码为始终适合宽高比。因此,默认情况下,您将永远无法使方面填充内容模式正常工作。

不过,有一种简单的方法可以实现这一点,在您设置托管图像视图的 url 属性后,还可以向您自己的类添加一个回调,如下所示:

myImageView.callbackOnSetImage = (id)self;

并在回调函数中为 imageView 设置所需的 contentMode,就像这样。这是经过测试的,对我有用。祝你好运

-(void) managedImageSet:(HJManagedImageV*)mi
{
    mi.imageView.contentMode = UIViewContentModeScaleAspectFill;
}
于 2012-05-21T14:08:06.453 回答
0

我自己找到了答案,我觉得它更简单明了。正如 Ican 所提到的,在 HJManagedImageV 类的源代码中,作者将 HJManagedImageV 实例的 imageView 硬编码为始终适合纵横比。所以我只是评论了该代码......对于喜欢做同样事情的人,请按照以下步骤操作

  1. 转到 HJManagedImageV.m 文件
  2. 搜索名为的方法

    -(void) setImage:(UIImage*)theImage
    
  3. 评论该行

    imageView.contentMode = ...
    

    或为 imageView 设置您想要的内容模式。注意:这将为使用此类的所有图像视图设置内容模式。所以我更喜欢第一个选项。

  4. 在您使用此类的代码中,设置 HJManagedImageV 的内容模式。

于 2012-05-22T08:16:36.960 回答