对于masonary对图片UIImageView约束的思考
首先考虑加载静态图片:
1、限定其Top,CenterX 图片会以最原始的形象展开,即:源文件的宽高,(在大屏机型上其他区域如:底部,左右部。留白)(在小屏机型上顶部正确,左右底均超出框)。
2、限定Left,Right, Top 图片会横向拉伸,即:左右为限定位置,高度保持源文件的高度,在大屏机型被横向拉伸,在小屏机型上横向压缩。
3、限定Top,CenterX,再设定ImageContentMode,会发生奇异的效果,不推荐使用。以大屏机型为例,如:设定 UIViewContentModeScaleAspectFit ,会居中显示,两端留白,高度等于源文件高度。
4、限定Top,Left,Right,Height(或等高的Bottom)(注:Height为源文件等宽高比的高度)时,图片宽高均等比拉伸或压缩,图片宽高值改变(可能不变),但比例相同。符合大多数需求。
然后加载动态图片——根据URL网络请求图片,动态加载。
既要考虑图片不变形,即保持图片原有宽高比(Ratio),这里最好能直接用原始宽高显示,即左右上下留白,图片居中。
又要考虑容器(一般为动态高度的Cell)动态刷新。这个过程有几个关键点:1.原始约束;2.图片下载成功节点;3.改变UIImageView后的约束;4.刷新容器的动作(一般使用代理,回主线程进行刷新)。