Пользовательское фоновое изображение UINavigationController UIToolbar

У меня есть использование приложения для 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 метод)?

16
задан pablasso 6 December 2011 в 08:09
поделиться

1 ответ

Вам нужно создать подкласс, а не создавать категорию.

Я не совсем понимаю, почему категория работает для 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 .

9
ответ дан 30 November 2019 в 22:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: