Я пишу свое первое приложение для iOS, ориентированное на платформу iOS 5.0+. Я использую протокол UIAppearance
для настройки пользовательского интерфейса приложений.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, который я сейчас использую, только что отрегулированный пикселем из-за моих угловых радиусов). –
Вот трюк: вы можете использовать 0 для верхнего и нижнего _if_, ваше фоновое изображение имеет ту же высоту, что и кнопка на панели навигации.Он просто заполняет это пространство вашим существующим градиентом. Ваше изображение не является высотой навигационной кнопки сетчатки, поэтому она будет растянута или повторена для заполнения этой высоты. Вы должны указать верхний и нижний размер кепки (первый и третий аргументы). Начните с '(7, 3, 7, 3)'. Это оставит некоторые полосы, но, надеюсь, даст более четкое представление о том, что происходит. – Dondragmer
Ahh, что делает немного больше смысла. Каков размер кнопки retina navBar? Я нарезаю элементы своего пользовательского интерфейса из файла PSD размером с сетчатку, поэтому, если мне нужно сделать кнопку navBar bg больше в файле psd и экспортировать ее, чтобы получить то, что мне нужно, это облегчит мне работу. –