1

Я пытаюсь использовать пользовательское rightBarButtonItem изображение, используя этот код в моем методе viewWillAppear:Пользовательского rightBarButtonItem изображение

// Custom rightBarButtonItem 
UIImage *buttonImage = [UIImage imageNamed:@"menu_button"]; 
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
[button setImage:buttonImage forState:UIControlStateNormal]; 
button.frame = CGRectMake(0, 0, buttonImage.size.width, buttonImage.size.height); 
[button addTarget:self action: @selector(handleBackButton) 
forControlEvents:UIControlEventTouchUpInside]; 

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, buttonImage.size.width - 10, buttonImage.size.height - 10)]; 
[view addSubview:button]; 

UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithCustomView:view]; 
self.navigationItem.rightBarButtonItem = customBarItem; 

Результат таков:

enter image description here

Но я хотел бы он меньше, так же, как я разработал его в Эскизе 3:

enter image description here

Что мне нужно сделать для достижения этого?

Спасибо! Эрик

+0

Похоже, что у вас есть только ресурс сетчатки и работает на устройстве не сетчатки. –

+0

@lan MacDonald Я запускаю его на своем реальном iPhone 5s, и у него есть сетчатый дисплей, не так ли? – Erik

+0

Да, iPhone 5s имеет сетчатый дисплей. Я просто комментировал, что это * выглядит *. Я не уверен на 100%, что здесь происходит, чтобы ваше изображение отображалось некорректно. –

ответ

0

Я считаю, что вам нужно настроить край изображения врезки:

[button setImageEdgeInsets:UIEdgeInsetsMake(topInset, leftInset, bottomInset, rightInset)]; 
+0

Каковы будут разные вставки? – Erik

+0

Это зависит от размера изображения вашей кнопки и размера вашей кнопки. Используйте точку останова или NSLog для вывода ширины и высоты вашей кнопки. Установите вставки так, чтобы левая и правая вставки, добавленные к ширине не сетчатки вашего изображения, равны ширине вашей кнопки. Точно так же верхняя и нижняя вставки, добавленные к высоте изображения не-сетчатки, должны быть равны высоте кнопки. –

+0

Что такое вставка – Erik

0

Рекомендуется установить режим рендеринга UIImage в UIImageRenderingModeAlwaysOriginal как это.

UIImage *barButtonimage = [[UIImage imageNamed:@"menu_button"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 

Затем вы можете установить образ UIBarButtonItem следующим

UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithImage: barButtonimage style:UIBarButtonItemStylePlain target:self action:@selector(buttonAction:)]; 

UIImageRenderingModeAlwaysOriginal: Всегда рисовать исходное изображение, без обработки его в качестве шаблона.

Смежные вопросы