iOS 導(dǎo)航欄高度適配

iPhoneX
iPhone8

問題:在首頁的navigationBar有張圖片低散,需要填充整個頂部。由于劉海屏頂部會多出24的高度,88高度的圖在iPhoneX機型是正常的,放在iPhone8上能感到明顯的壓縮驾孔,這是不能讓人接受的,設(shè)計說頂部多出的尺寸可以裁剪掉进统,但不能壓縮助币。

我的第一個思考:改變填充方式就好了。

圖片填充方式

底部填充

??第一張是高度375*88螟碎,圖片尺寸是@2x,@3x.所以縱向是沒有拉伸的。
??ScaleToFill是默認(rèn)拉伸,會變形不會留白迹栓。
??ScaleAspectFit是按比例壓縮掉分,會留白。
??ScaleAspectFill是等比例填充克伊,超出部分裁剪掉酥郭。
??ModeTop、ModeCenter愿吹、ModeBottom是分別從頂部不从、中間、底部拉伸犁跪,但橫向就不會填充了椿息。也就是說375的圖在414的寬度上會留白。如果橫向也能鋪滿坷衍,結(jié)合ModeBottom的方式就是理想的拉伸方式了寝优。然而屬性不能同時設(shè)置兩個。
??resizableImageWithCapInsets在網(wǎng)上看到這個方法,可以按想要的部分進行填充枫耳。就是小圖顯示大view的方法乏矾,與我想要的剛好相反。
??填充的辦法不能實現(xiàn)理想的填充方式,我也想到了兩套圖钻心,完美解決凄硼。實現(xiàn)起來也簡單,然而考慮到后期的維護捷沸,也要考慮到美工的工作量帆喇。果斷放棄了。
??最后從根源上分析亿胸,iPhoneX整個導(dǎo)航欄高度是88,iPhone8的高度是64,也就是說拿到iPhoneX的圖需要裁減掉88-64=24的高度坯钦。下面是裁減圖片的方法:

- (UIImage*)cutOutImageWithRect:(CGPoint)point image:(UIImage *)image{
    CGFloat imageWidth = CGImageGetWidth(image.CGImage);
    CGFloat imageHeight = CGImageGetHeight(image.CGImage);
    CGRect rect = CGRectMake(point.x*image.scale, point.y*image.scale, imageWidth-point.x*image.scale, imageHeight-point.y*image.scale);
    
    CGImageRef subImageRef = CGImageCreateWithImageInRect(image.CGImage, rect);
    CGRect smallBounds = CGRectMake(0, 0, CGImageGetWidth(subImageRef), CGImageGetHeight(subImageRef));
    UIGraphicsBeginImageContext(smallBounds.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextDrawImage(context, smallBounds, subImageRef);
    UIImage* smallImage = [UIImage imageWithCGImage:subImageRef];
    UIGraphicsEndImageContext();
    CGImageRelease(subImageRef);
    return smallImage;
    
}

總結(jié):
1.我的主題包是從后臺下載的,所以在下載解壓之后裁減圖片再寫回去侈玄,以后使用的時候就不用考慮尺寸了
2.裁減圖片時需要考慮圖片是@2x還是@3x婉刀,真正裁減的是像素,再按原來的名稱寫回去。我們在一個機型上只需要處理@2x或@3x就可以了序仙。
3.使用CGImageCreateWithImageInRect方法一定要記得釋放突颊,要不然會內(nèi)存泄露。
4.最后貼上一張?zhí)幚硗甑膱D潘悼。橫向還是有拉伸的律秃,不過不明顯,因為現(xiàn)在的尺寸都是按iPhone6來的治唤。真正的不拉伸棒动,還是大圖裁小圖。

正常圖片顯示

5.提供一種解決思路:有任何好的解決辦法或有任何問題歡迎留言評論宾添。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末船惨,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子缕陕,更是在濱河造成了極大的恐慌粱锐,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扛邑,死亡現(xiàn)場離奇詭異怜浅,居然都是意外死亡,警方通過查閱死者的電腦和手機蔬崩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門恶座,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人舱殿,你說我怎么就攤上這事奥裸。” “怎么了沪袭?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵湾宙,是天一觀的道長樟氢。 經(jīng)常有香客問我,道長侠鳄,這世上最難降的妖魔是什么埠啃? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮伟恶,結(jié)果婚禮上碴开,老公的妹妹穿的比我還像新娘。我一直安慰自己博秫,他們只是感情好潦牛,可當(dāng)我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著挡育,像睡著了一般巴碗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上即寒,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天橡淆,我揣著相機與錄音,去河邊找鬼母赵。 笑死逸爵,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的凹嘲。 我是一名探鬼主播师倔,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼施绎!你這毒婦竟也來了溯革?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤谷醉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后冈闭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體俱尼,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年萎攒,在試婚紗的時候發(fā)現(xiàn)自己被綠了遇八。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡耍休,死狀恐怖刃永,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情羊精,我是刑警寧澤斯够,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響读规,放射性物質(zhì)發(fā)生泄漏抓督。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一束亏、第九天 我趴在偏房一處隱蔽的房頂上張望铃在。 院中可真熱鬧,春花似錦碍遍、人聲如沸定铜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽揣炕。三九已至,卻和暖如春赖捌,著一層夾襖步出監(jiān)牢的瞬間祝沸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工越庇, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留罩锐,地道東北人。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓卤唉,卻偏偏與公主長得像涩惑,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子桑驱,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,955評論 2 355