1. 程式人生 > >TabBar Item 圖片大小不正常

TabBar Item 圖片大小不正常

這是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(00, 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方法將圖片進行重新繪製之後會出現清晰度下降的情況。