У меня есть использование приложения для iPhone UINavigationController
и хотел бы настроить элементы с пользовательскими фоновыми изображениями. Я смог сделать это для UINavigationController's
UINavigationBar
симпатичный легко категории Objective-C использования как указано ниже:
http://foobarpig.com/iphone/uinavigationbar-with-solid-color-or-image-background.html
Я хотел бы сделать то же для UINavigationController's
UIToolbar
, но тот же подход, кажется, не работает (хотя у меня нет абсолютно никакой идеи почему нет.) я озирался, и люди, кажется, предлагают разделить на подклассы UIToolbar
, но это не возможно для UINavigationController's
панель инструментов, которая является только для чтения UIToolbar
. Я хочу использовать UINavigationController's
панель инструментов вместо того, чтобы просто делать панель инструментов подпредставления, потому что я использую слайд - в setToolbarHidden
анимация.
У любого есть любая идея, если возможно применить фоновое изображение к этому UINavigationController
панель инструментов (скорее всего, так или иначе переопределяя drawRect
метод)?
Вам нужно создать подкласс, а не создавать категорию.
Я не совсем понимаю, почему категория работает для UINavigationBar
, но не для UIToolbar
, но создание подклассов работает для них обоих, и я думаю, что это более стандартный способ настройки таких вещей, как тот.
Итак, чтобы создать подкласс UIToolbar
, создайте класс с именем MyToolbar
(или что-то подобное) и поместите его в .h:
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
@interface MyToolbar : UIToolbar {}
- (void)drawRect:(CGRect)rect;
@end
И это в файле .m:
#import "MyToolbar.h"
@implementation MyToolbar
- (void)drawRect:(CGRect)rect {
backgroundImage = [UIImage imageNamed:@"my-awesome-toolbar-image.png"];
[backgroundImage drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end
Затем вы должны указать контроллеру навигации использовать MyToolbar
вместо UIToolbar
. Самый простой способ, который я нашел для этого, - выбрать контроллер навигации в Interface Builder, а затем в инспекторе атрибутов установить флажок «Показать панель инструментов». Панель инструментов должна появиться в окне NavigationController
. Щелкните по нему и затем в Инспекторе удостоверений измените класс на MyToolbar
.