TabBar Item 圖片大小不正常
阿新 • • 發佈:2019-01-31
這是Apple官方的尺寸要求,對應不同的螢幕尺寸,可用48*48在iPhone6模擬器上會出現圖示過大的問題。
注:開發環境為Xcode 7.0 beta 1
我嘗試調整了tabbar item的Image insets,將未選中狀態下的圖片調整到了合適的大小,但當我執行程式時發現,當圖示被點選的時候,圖片會恢復成預設大小,即圖示過大。
而且此時我並未選擇selected Image,而當我選擇了selected Image之後又出現點選後圖片消失的Bug..
我棄用StoryBoard開始嘗試用純程式碼實現,結果遇到同樣的問題,查資料後發現這樣一個方法:
+ (UIImage *)reSizeImage:(UIImage *)image toSize:(CGSize)reSize
{
UIGraphicsBeginImageContext(CGSizeMake(reSize.width,
reSize.height));
[image drawInRect:CGRectMake(0, 0,
reSize.width, reSize.height)];
UIImage *reSizeImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return reSizeImage;
}
將原圖片在新的Size下重新繪製,然後將使用調整過的圖示。
而且在使用該方法之前一定要把原先在StoryBoard中選擇的ImageInset調為零,即便是刪掉相關Segue之後ImageInset仍然會保持為之前的設定值,Clean project也並沒有什麼用。
如果使用原圖片而採用Image insets調整大小未重複選中時正常,每選中一次Image insets就會呼叫一次,導致圖片越來越小最後消失。
使用UIImage的imageWithRenderingMode方法可以避免原生TabBar對圖片的修改,在需要非系統藍圖片時會用到。
最終解決方法,下載64*64的圖片,將其拖到@2x位置。
將高解析度的圖片放在@1x位置,如系統需要呼叫@2x時就會自動將其放大,導致圖片過大,採用reSizeImage方法將圖片進行重新繪製之後會出現清晰度下降的情況。