Как добавить пользовательское изображение в элемент панели навигации?
UIBarButtonItem *doneitem=[[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(donePressed:)]autorelease];
self.navigationItem.rightBarButtonItem=doneitem;
Это код моего приложения, мне нужно добавить изображение на эту кнопку?
Пожалуйста, помогите мне.
Ответы
Ответ 1
Попробуйте этот код:
UIImage* image3 = [UIImage imageNamed:@"mail-48_24.png"];
CGRect frameimg = CGRectMake(0, 0, image3.size.width, image3.size.height);
UIButton *someButton = [[UIButton alloc] initWithFrame:frameimg];
[someButton setBackgroundImage:image3 forState:UIControlStateNormal];
[someButton addTarget:self action:@selector(sendmail)
forControlEvents:UIControlEventTouchUpInside];
[someButton setShowsTouchWhenHighlighted:YES];
UIBarButtonItem *mailbutton =[[UIBarButtonItem alloc] initWithCustomView:someButton];
self.navigationItem.rightBarButtonItem=mailbutton;
[someButton release];
Ответ 2
UIBarButtonItem *_btn=[[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"XXXXXXX.png"]
style:UIBarButtonItemStylePlain
target:self
action:@selector(yourMethod)];
self.navigationItem.rightBarButtonItem=_btn;
Ответ 3
Пожалуйста, попробуйте этот код:
UIButton *btnNext1 =[[UIButton alloc] init];
[btnNext1 setBackgroundImage:[UIImage imageNamed:@"btnNext.png"] forState:UIControlStateNormal];
btnNext1.frame = CGRectMake(100, 100, 50, 30);
UIBarButtonItem *btnNext =[[UIBarButtonItem alloc] initWithCustomView:btnNext1];
[btnNext1 addTarget:self action:@selector(nextButtonClicked) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.rightBarButtonItem = btnNext;
Ответ 4
UIButton *urButton = [UIButton buttonWithType:UIButtonTypeCustom];
urButton.frame = urRequiredFrame;
[urButton setImage:urImage forState:UIControlStateNormal];
[urButton addTarget:self action:@selector(donePressed:)
forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *doneButton =[[UIBarButtonItem alloc] initWithCustomView:urButton];
self.navigationItem.rightBarButtonItem=doneButton;
Ответ 5
Если кому-то нужен код Swift для принятого ответа:
let infoImage = UIImage(named: "my-icon-32.png")
let imgWidth = infoImage?.size.width
let imgHeight = infoImage?.size.height
let button:UIButton = UIButton(frame: CGRect(x: 0,y: 0,width: imgWidth!, height: imgHeight!))
button.setBackgroundImage(infoImage, forState: .Normal)
button.addTarget(self, action: Selector("openInfo"), forControlEvents: UIControlEvents.TouchUpInside)
self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: button)
P.S. Ответ Gurpreet Singh работает только для прозрачного PNG, также я должен установить кнопку tintcolor, отличную от clearColor.
Ответ 6
В Свифте
Другое решение, использующее withRenderingMode(UIImage.RenderingMode.alwaysOriginal)
ниже:
let img = UIImage(named: "picture")!.withRenderingMode(UIImage.RenderingMode.alwaysOriginal)
let leftBarButtonItem = UIBarButtonItem(image: img, style: UIBarButtonItem.Style.plain, target: self, action: nil)
self.navigationItem.leftBarButtonItem = leftBarButtonItem
Ответ 7
Вот что работает для меня. Я нашел 30x30, чтобы быть хорошим размером для кнопки в навигационной панели. UIImage автоматически масштабируется до размера кнопки.
UIImage *image = [UIImage imageNamed:@"XXXXXXXXXX"];
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
[button setBackgroundImage:image forState:UIControlStateNormal];
[button addTarget:self action:@selector(someAction) forControlEvents:UIControlEventTouchUpInside];
button.adjustsImageWhenHighlighted = NO;
UIBarButtonItem *rightButton =[[UIBarButtonItem alloc] initWithCustomView:button];
self.navigationItem.rightBarButtonItem = rightButton;
Ответ 8
[doneItem setImage:[UIImage imageNamed:@"yourImage.png"] forState:UIControlStateNormal];
Ответ 9
Один простой способ:
UIImage* customImg = [UIImage imageNamed:@"custom-img.png"];
UIBarButtonItem *_customButton = [[UIBarButtonItem alloc] initWithImage:customImg style:UIBarButtonItemStyleDone target:nil action:nil];
self.navigationItem.rightBarButtonItems = [[NSArray alloc] initWithObjects:_customButton, nil];
Тогда, если вам нужно больше одной кнопки, вы можете просто и другую UIBarButtonItem
до initWithObjects
.
Ответ 10
Сделайте это. Это проще.
-
Поместите файл изображения в каталог проекта
-
Добавьте файл в Xcode (щелкните правой кнопкой мыши по проекту Xcode, добавьте файлы в "Имя проекта" )
-
Выберите свой UIBarButtonItem в раскадровке
-
Нажмите "Изображение" и найдите свое изображение (см. скриншот)
-
Празднуйте, потому что он будет работать отлично и не требует лишнего кода.
![enter image description here]()
Ответ 11
Чтобы получить ответ от Gurpreet Singh. Чтобы сохранить текущий статус уже существующей кнопки, повторно используйте цель и действие.
SEL selector = self.navigationItem.rightBarButtonItem.action;
id target = self.navigationItem.rightBarButtonItem.target;
UIBarButtonItem *_btn=[[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"icon_close.png"]
style:UIBarButtonItemStylePlain
target:target
action:selector];
self.navigationItem.rightBarButtonItem = _btn;
Ответ 12
let sliderImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 40, height: 30))
sliderImageView.contentMode = .ScaleAspectFit
sliderImageView.image = UIImage(named: "sliderMenu")
OR
var sliderImage = UIImage(named: "sliderMenu")
navigationItem.leftBarButtonItem?.image = sliderImage