UIImageView 子类需要处理调整大小

Posted

技术标签:

【中文标题】UIImageView 子类需要处理调整大小【英文标题】:UIImageView subclass needs to handle resize 【发布时间】:2013-10-07 03:35:30 【问题描述】:

我正在创建一个 UIImageView 子类来显示音频波形。方法是加载文件,做数学运算,保存 PNG 文件,然后self.image = thePNG。这样做的好处是,在调整大小或重绘时,UIImageView 会拉伸 PNG 并快速拉伸。

现在如果图像扩展太多,那么我需要重新计算波形以避免可见像素化。既然我们知道UIImageView does not call drawRect,是否有在调整大小期间调用的方法,以便我可以决定是否需要重绘?

附:重新计算时,计算后我将是fading in the new image。希望这对于像 Google 地球这样的用户来说是无缝的。

【问题讨论】:

用户是手动调整图片大小还是自动调整?即你可以跟踪捏来放大图像吗? 好问题。这将是自动的。例如,界面旋转,约束使视图增长。 我正在进一步寻找,也许可以在框架属性上使用 KVO 【参考方案1】:

这里有一个解决方案:

- (void)layoutSubviews

    [super layoutSubviews];
    NSLog(@"%@", NSStringFromCGRect(self.frame));

对此的权衡是它不会为动画的每一帧调用,正如 David Jeske 在 Is there a UIView resize event? 中指出的那样


其他无效的想法:

覆盖setFrame:(CGRect)frame 在Is there a UIView resize event? 讨论过

监听键值对观察,讨论于https://groups.google.com/forum/#!topic/ococoa/UojAu8rclwo

【讨论】:

以上是关于UIImageView 子类需要处理调整大小的主要内容,如果未能解决你的问题,请参考以下文章

自定义 UITableViewCell 中的 UIImageView - 始终调整为图像大小

在第一个实例上,内容未在 UICollectionViewCell 内调整大小

在 UITableViewCell 中调整 UIImageView 的大小,动态使用 textlabel

如何调整 UIImageView 的大小并强制重新布局父 UITableViewCell

用手指IOS调整UIImageView的大小

在自己的坐标系中调整 UIImageView 的大小