需求:
我們APP瀑布流列表的圖片的比例是16:9窜司,但網(wǎng)絡(luò)請求的圖片有一些不同比例的,產(chǎn)品需求是圖片在不變形情況下航揉,保留左右兩邊不截取塞祈,左右兩邊不留白,上下部分可截取可留白帅涂。
方案:
蘋果提供了修改UIimageView填充模式的屬性contentMode议薪,其中有這樣的兩種模式:
UIViewContentModeScaleAspectFit:圖片原始比例完整顯示在imageView中,但會有留白媳友,如下所示
比正常比例寬的圖片上下會留白
比正常比例高的圖片左右會留白
UIViewContentModeScaleAspectFill:圖片原始比例充滿imageView斯议,但會有裁剪,即部分圖片內(nèi)容在imageView中顯示不下醇锚,如下所示
比正常比例寬的圖片左右會截取
比正常比例高的圖片上下會截取
方案:
這兩個(gè)模式都不能單獨(dú)完成哼御,兩邊不截取,不留白這個(gè)需求焊唬,所以要在加載圖片時(shí)獲取圖片的寬高比與imageView的寬高比做比較艇搀,分別選用不同的模式。
if (image.size.width/image.size.height > 16.0/9.0) {
//比正常比例寬的圖片
imageView.contentMode = UIViewContentModeScaleAspectFit;
} else {
//比正常比例高的圖片
imageView.contentMode = UIViewContentModeScaleAspectFill;
}
這樣就可以完成左右不截取求晶,不留白焰雕,圖片不變形的需求了。