setContentMode:对于 HJManagedImageV 不适用于 iOS
Posted
技术标签:
【中文标题】setContentMode:对于 HJManagedImageV 不适用于 iOS【英文标题】:setContentMode: for HJManagedImageV is not working for iOS 【发布时间】:2012-04-25 13:53:35 【问题描述】:我正在使用第三方库 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 都不起作用。
【问题讨论】:
【参考方案1】:如果您查看 HJManagedImageV 类的源代码,您会注意到作者将 HJManagedImageV 实例的 imageView 硬编码为始终适合宽高比。因此,默认情况下,您将永远无法使用方面填充内容模式。
不过有一种简单的方法可以实现这一点,在您设置托管图像视图的 url 属性之后,还可以向您自己的类添加一个回调,如下所示:
myImageView.callbackOnSetImage = (id)self;
并在回调函数中为imageView设置所需的contentMode,就像这样。这是经过测试的,对我有用。祝你好运
-(void) managedImageSet:(HJManagedImageV*)mi
mi.imageView.contentMode = UIViewContentModeScaleAspectFill;
【讨论】:
感谢您的反馈...我尝试了您的解决方案并且它有效...但以下是我认为更简单的...【参考方案2】:我自己找到了我觉得更简单明了的答案。正如 Ican 所提到的,在 HJManagedImageV 类的源代码中,作者将 HJManagedImageV 实例的 imageView 硬编码为始终适合宽高比。所以我只是评论了该代码......对于喜欢这样做的人,请按照以下步骤操作
-
转到 HJManagedImageV.m 文件
搜索一个名为
的方法-(void) setImage:(UIImage*)theImage
评论该行
imageView.contentMode = ...
或为 imageView 设置您想要的内容模式。注意:这将为使用此类的所有图像视图设置内容模式。所以我更喜欢第一个选项。
在使用此类的代码中,设置 HJManagedImageV 的内容模式。
【讨论】:
Raj,每次您使用较新版本更新库时,您都必须查看源代码并以指定的方式对其进行调整。考虑一下以上是关于setContentMode:对于 HJManagedImageV 不适用于 iOS的主要内容,如果未能解决你的问题,请参考以下文章
对于独立应用程序(对于 Spring JMS),Java main 方法应该是啥?
为啥会提示“我们计算的请求签名与您提供的签名不匹配”。对于 GET 但不是 PUT 对于 OpenSearch?
对于Passenger,控制台日志(从puts的输出)去哪里......对于Nodejs