setContentMode:用于HJManagedImageV不适用于iOS

时间:2012-04-25 13:53:36

标签: image asynchronous loading ios-4.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都没有工作。

2 个答案:

答案 0 :(得分:4)

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

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

myImageView.callbackOnSetImage = (id)self;

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

-(void) managedImageSet:(HJManagedImageV*)mi
{
    mi.imageView.contentMode = UIViewContentModeScaleAspectFill;
}

答案 1 :(得分:0)

我自己找到了答案,我感觉更简单,更直接。正如我所提到的,在HJManagedImageV类的源代码中,作者将HJManagedImageV实例的imageView硬编码为始终适合方面。所以我只是评论了代码......对于那些喜欢这样做的人来说,请按照以下步骤进行操作

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

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

    imageView.contentMode = ...
    

    或为imageView设置所需的内容模式。注意:这将使用此类为所有imageView设置内容模式。所以我更愿意选择第一个选项。

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