年底了,上头提了个需求让我蛋疼了2天:加载图片时候要全屏显示,但是高度不能超过屏幕宽度(最多显示个正方形),同时,图片截取是从最上方开始.
iOS当中的 UIViewContentModeScaleAspectFill 属性基本上是贴合的,唯一需要考虑的是怎么让图片的截取从最上方开始。
因为图片是加载在cell中的,走了点弯路,重绘图片再放回cell中会导致复用和内存占用的问题,最后我开始寻找layer层的解决方式,只花了一小会就找到了解决办法- -
CGFloat newHeight = DEF_SCREEN_WIDTH * imageHeight / imageWidth;
if (newHeight > DEF_SCREEN_WIDTH) {
myImageView.layer.contentsRect = CGRectMake(0, 0, 1, (float)(DEF_SCREEN_WIDTH / newHeight));
self.imageHeight.constant = DEF_SCREEN_WIDTH;
}else{
myImageView.layer.contentsRect = CGRectMake(0, 0, 1, 1);
self.imageHeight.constant = newHeight;
}
以上就可以妥妥的搞定了。
网友评论