UIBarButtonItem внешний вид не работает на устройстве - PullRequest
0 голосов
/ 26 февраля 2012

Я столкнулся со следующей проблемой:

Я настраиваю весь внешний вид моего приложения. Теперь я хочу изменить фон кнопок на панели навигации. Если я запускаю свой код на симуляторе, он работает. Но если я запускаю его на устройстве, это ничего не меняет. Как это возможно?

Я запускаю приложение на своем iPhone 4S iOS 5.0.1

#import "test.h"
#import "InfoButton.h"

@implementation test

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad {
    if([self.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)] ) {
        //iOS 5 new UINavigationBar custom background
        UIImage *navi = [UIImage imageNamed:@"navbar.png"];
        [self.navigationController.navigationBar setBackgroundImage:navi forBarMetrics: UIBarMetricsDefault];
        UIImage *toolbarBackButtonBackgroundPortrait = [[UIImage imageNamed:@"nav_back.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 17, 0, 6)];

        [[UIBarButtonItem appearance] setBackButtonBackgroundImage:toolbarBackButtonBackgroundPortrait forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
    } 
    [super viewDidLoad];
    UIButton * infoDarkButtonType = [[UIButton buttonWithType:UIButtonTypeInfoLight] retain];
    infoDarkButtonType.frame = CGRectMake(0.0, 0.0, 30.0, 25.0);
    infoDarkButtonType.backgroundColor = [UIColor clearColor];
    [infoDarkButtonType addTarget:self action:@selector(infoButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem *infoButton = [[UIBarButtonItem alloc] initWithCustomView:infoDarkButtonType];
    self.navigationItem.rightBarButtonItem = infoButton;
    [infoDarkButtonType release];
    [infoButton release];
}

Ответы [ 2 ]

1 голос
/ 25 апреля 2012

Была такая же проблема. Мое изображение было названо "add.png" и использовало [UIImage imageNamed: @ "add.png"] в коде. Пока это работало в симуляторе, оно не было на устройстве.

Я переименовал файл в «Add.png» (заглавная A) и изменил код в [UIImage imageNamed: @ «Add.png»]. Это решило проблему и не работает как в симуляторе, так и на устройстве - странно: /

1 голос
/ 26 февраля 2012

Проверьте правильность написания файла изображения, особенно заглавные буквы.Я заметил, что симулятор будет игнорировать заглавные буквы и по-прежнему загружать файл, пока устройство чувствительно к регистру.Я сам делал это несколько раз.

...