Добавление изображения в UIButton в UINavigationBar

В моем приложении есть панель навигации с двумя кнопками, по одной с каждой стороны. Эта кнопка используется для изменения некоторых важных аспектов приложения, таких как серверы и прочее.

Когда сервер находится в автономном режиме или возникли проблемы, пользователю предлагается изменить эту опцию.

Что я хочу: Как я могу добавить изображение к кнопке, чтобы привлечь внимание пользователя? Что-то вроде этого:

Но проблема в том, что я даже не знаю, как начать искать это, как я могу это сделать?

2 ответа

Решение

Я рекомендую добавить UILabel в качестве подпредставления кнопки вместо изображения, чтобы вы могли программно изменить его с помощью NSNotificationCenter из любого места в вашем приложении.

- (void)viewDidLoad
{
    [[NSNotificationCenter defaultCenter]
     addObserver:self
     selector:@selector(updateButtonLabel:)
     name:@"UpdateButtonLabel" object:nil];

    UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem]
    button.frame = CGRectMake(0, 0, 35, 35);
    [button addTarget:self action:@selector(buttonMethods:) forControlEvents:UIControlEventTouchUpInside];
    [button setTintColor:[UIColor companyBlue]];
    [button setTitle:@"Button" forState:UIControlStateNormal];

    self.buttonLabel = [[UILabel alloc]initWithFrame:CGRectMake(18,-7,18,18)];
    self.buttonLabel.textColor = [UIColor whiteColor];
    self.buttonLabel.backgroundColor = [UIColor companyRed];
    self.buttonLabel.font = [UIFont systemFontOfSize:13.0];
    self.buttonLabel.layer.cornerRadius = 9;
    self.buttonLabel.layer.masksToBounds = YES;
    self.buttonLabel.textAlignment = NSTextAlignmentCenter;
    self.buttonLabel.text = @"!";

    [button addSubview:self.buttonLabel];
}

- (void)updateButtonLabel:(NSNotification *)notification
{
    NSString *labelString = notification.object;

   // Post a notification from any view controller with a string with no characters to hide the label:
    if (newString.length < 1)
    {
        self.buttonLabel.hidden = YES;
    }
    else
    {
        self.buttonLabel.text = labelString;
    }
}

- (void)dealloc
{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

За это initWithCustomView будет работать с этим вы можете добавить UIView объекты там

 -(void)setRightBarButton{
        UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
        button.frame = CGRectMake(0, 0, 35, 35);
        [button addTarget:self action:@selector(buttonMethods:) forControlEvents:UIControlEventTouchUpInside];
        [button setTitle:@"Button" forState:UIControlStateNormal];
        self.navigationItem.rightBarButtonItem=[[UIBarButtonItem alloc]initWithCustomView:button];
    }
Другие вопросы по тегам