我正在編寫我的第一個iOS應用程序,面向iOS 5.0+平臺。我正在使用UIAppearance
協議來定製應用程序UI。UIImage resizableImageWithCapInsets:無法按預期工作
我試圖在整個應用程序中更改UIBarButtonItem
的背景。由於我的UIBarButtonItem
的尺寸可能會根據所使用的文本或圖標而改變大小,因此我試圖將UIImage resizableImageWithCapInsets:
用於我的背景PNG。
我最初在Ray Wenderlich上找到了我需要的代碼。使用相同的確切代碼,與上述教程中使用的圖像非常接近,我得到了奇怪的結果。也許這只是我對Cocoa Touch的缺乏經驗。
這是我正在使用的代碼。
DreamsAppDelegate.m - customizeAppearance:
UIImage *btnBg = [[UIImage imageNamed:@"navBarButton-bg"]
resizableImageWithCapInsets:UIEdgeInsetsMake(0, 6, 0, 6)];
[[UIBarButtonItem appearance] setBackgroundImage:btnBg
forState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];
這裏是我試圖使用
的PNG背景圖片這裏是結果(模擬器)
感謝您的答覆。發佈的圖片是@ 2x。所以我應該把我的測量值切成(0,3,0,3)?你是說我應該把我的圖像中間放大1px?我明白爲什麼會這樣,但我跟着的教程有一個30像素×40像素的圖像,具有與我自己相同的樣式漸變,並且它看起來非常棒(使用現在使用的UIEdgeInsetsMake,只需調整一個像素因爲我的角落半徑)。 – 2012-04-25 12:20:22
這裏的技巧:你可以使用0作爲頂部和底部_if_你的背景圖像與導航欄按鈕的高度相同。它只是用您現有的漸變填充該空間。您的圖像不是視網膜導航按鈕的高度,因此它將被拉伸或重複以填充該高度。您必須提供頂部和底部大小(第一個和第三個參數)。以'(7,3,7,3)'開頭。這將留下一些條紋,但希望能更清楚地瞭解發生了什麼。 – Dondragmer 2012-04-25 12:34:09
啊,這確實有點意義。視網膜navBar按鈕的大小是多少?我將我的用戶界面元素從一個視網膜大小的PSD文件中切出,所以如果我需要在psd文件中將navBar按鈕設置得更大,然後將其導出以獲得我需要的內容,那麼這對我來說會很容易。 – 2012-04-25 13:06:24