前言
以前項目中使用站位圖,每一個不同尺寸的UIImageView
或者 UIButton
都需要美工切兩張占位圖(@2x和@3x),會增加App的體積击你。本文主要講是如何使用一張圖片疮跑,適應不同尺寸的容器。
只有一個方法就不繞圈子了
/**
傳入需要的占位圖尺寸 獲取占位圖
@param size 需要的站位圖尺寸
@return 占位圖
*/
+ (UIImage *)placeholderImageWithSize:(CGSize)size {
// 占位圖的背景色
UIColor *backgroundColor = [UIColor whiteColor];
// 中間LOGO圖片
UIImage *image = [UIImage imageNamed:@"placeholdimage"];
// 根據(jù)占位圖需要的尺寸 計算 中間LOGO的寬高
CGFloat logoWH = (size.width > size.height ? size.height : size.width) * 0.5;
CGSize logoSize = CGSizeMake(logoWH, logoWH);
// 打開上下文
UIGraphicsBeginImageContextWithOptions(size,0, [UIScreen mainScreen].scale);
// 繪圖
[backgroundColor set];
UIRectFill(CGRectMake(0,0, size.width, size.height));
CGFloat imageX = (size.width / 2) - (logoSize.width / 2);
CGFloat imageY = (size.height / 2) - (logoSize.height / 2);
[image drawInRect:CGRectMake(imageX, imageY, logoSize.width, logoSize.height)];
UIImage *resImage =UIGraphicsGetImageFromCurrentImageContext();
// 關閉上下文
UIGraphicsEndImageContext();
return resImage;
}
下面上一張圖解釋一下方法中的內(nèi)容
注意
一個項目使用一張占位圖雖然會少量的減少App的體積,但是對性能也會造成一定影響旗们。這就需要根據(jù)自己的需求來選擇了。
以上觀點如果有錯誤的地方蔓涧, 希望能及時聯(lián)系我件已,我會立即更改,謝謝元暴。