某一个逗比需求:图片从最上方截取,同时充满屏幕宽度

年底了,上头提了个需求让我蛋疼了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;

}

以上就可以妥妥的搞定了。

你可能感兴趣的:(某一个逗比需求:图片从最上方截取,同时充满屏幕宽度)