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