Добавить 2 UILabels в заголовке UINavigationBar поверх друг друга

У меня есть пользовательский UINavigationBar с 2-строчной меткой в ​​ titleView :

        UILabel *navBarLabel = [[UILabel alloc] initWithFrame:CGRectZero];  
        UINavigationItem *item = [[UINavigationItem alloc] init];  
        navBarLabel.backgroundColor = [UIColor clearColor];
        navBarLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:14];
        navBarLabel.numberOfLines = 2;
        navBarLabel.textAlignment = UITextAlignmentCenter;
        navBarLabel.textColor = [UIColor colorWithRed:124.0/255.f green:125.0/255.f blue:128.0/255.f alpha:1.0];
        navBarLabel.text = @"This\nis an example";
        [navBarLabel sizeToFit];
        item.titleView = navBarLabel;

Но вместо того, чтобы сделать мой UILabel с двумя строками текстов, я хотел бы добавить 2 UILabels , один поверх другого для достижения настройки шрифта в каждой из «строк» ​​отдельно. Как это реализовано? Есть идеи?

1
nl ja de

2 ответы

Просто создайте родительский контейнер UIView , чтобы удерживать ваши две метки, и используйте этот родительский контейнер в качестве заголовка. В псевдокоде:

   UIView *titleView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 150, 44)];
   [titleView addSubview:someLabel];
   [titleView addSubview:anotherLabel];
   item.titleView = titleView;

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

7
добавлено
Большое спасибо! Это помогло!
добавлено автор Sergey Grischyov, источник

iOS позволяет добавить два элемента в панель. Попробуйте следующий код.

  UIButton *tempButton = nil;
    UIImage  *tempButtonImage = nil;
    UIImage  *tempButtonPressedImage = nil;

    tempButtonImage = [UIImage imageNamed:@"unselected1.png"];
    tempButtonPressedImage = [UIImage imageNamed:@"selected1.png"];
    tempButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [tempButton setImage : tempButtonImage forState : UIControlStateNormal];
    [tempButton setImage : tempButtonPressedImage forState : UIControlStateHighlighted];
    [tempButton addTarget : self action : @selector(tempButtonClick:) forControlEvents : UIControlEventTouchUpInside];
    tempButton.frame = CGRectMake(0, 0, tempButtonImage.size.width, tempButtonImage.size.height);

    UIView *tempButtonContainer = [[UIView alloc] initWithFrame:(CGRect){0.0, 0.0, tempButtonImage.size.width, tempButtonImage.size.height}];
    tempButtonContainer.backgroundColor = [UIColor clearColor];
    [tempButtonContainer addSubview:tempButton];

    UIBarButtonItem *tempToolbarButton = [[UIBarButtonItem alloc] initWithCustomView:tempButtonContainer];
   //custom logout button
    UIButton *temp2Button = nil;
    UIImage  *temp2ButtonImage = nil;
    UIImage  *temp2ButtonPressedImage = nil;

    temp2ButtonImage = [UIImage imageNamed:@"unselectedtemp2Button.png"];
    temp2ButtonPressedImage = [UIImage imageNamed:@"selectedtemp2Button.png"];
    temp2Button = [UIButton buttonWithType:UIButtonTypeCustom];
    [temp2Button setImage : temp2ButtonImage forState : UIControlStateNormal];
    [temp2Button setImage : temp2ButtonPressedImage forState : UIControlStateHighlighted];
    [temp2Button addTarget : self action : @selector(temp2ButtonClick:) forControlEvents : UIControlEventTouchUpInside];
    temp2Button.frame = CGRectMake(0, 0, temp2ButtonImage.size.width, temp2ButtonImage.size.height);

    UIView *temp2ButtonContainer = [[UIView alloc] initWithFrame:(CGRect){0.0, 0.0, temp2ButtonImage.size.width, temp2ButtonImage.size.height}];
    temp2ButtonContainer.backgroundColor = [UIColor clearColor];
    [temp2ButtonContainer addSubview:temp2Button];

    UIBarButtonItem *temp2ToolbarButton = [[UIBarButtonItem alloc] initWithCustomView:temp2ButtonContainer];

   //setting right items
    self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:tempToolbarButton, temp2ToolbarButton, nil];


    UIButton *button = nil;
    UIImage  *buttonImage = nil;
    UIImage  *buttonPressedImage = nil;

    buttonImage = [UIImage imageNamed:@"asd.png"];
    buttonPressedImage = [UIImage imageNamed:@"selected-asd.png"];
    button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setImage : buttonImage forState : UIControlStateNormal];
    [button setImage : buttonPressedImage forState : UIControlStateHighlighted];
    [button addTarget : self action : @selector(buttonClick:) forControlEvents : UIControlEventTouchUpInside];
    button.frame = CGRectMake(0, 0, buttonImage.size.width, buttonImage.size.height);

    UIView *buttonContainer = [[UIView alloc] initWithFrame:(CGRect){0.0, 0.0, buttonImage.size.width, buttonImage.size.height}];
    buttonContainer.backgroundColor = [UIColor clearColor];
    [buttonContainer addSubview:button];

    UIBarButtonItem *toolbarButton = [[UIBarButtonItem alloc] initWithCustomView:buttonContainer];

    self.navigationItem.leftBarButtonItem = toolbarButton;
2
добавлено
Извините, но мне не нужны кнопки, мне нужны ярлыки
добавлено автор Sergey Grischyov, источник
Используйте ярлык вместо кнопок.
добавлено автор Arahim, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

iOS Developers — русскоговорящее сообщество
iOS Developers — русскоговорящее сообщество
2 400 участник(ов)

Общаемся на темы, посвященным iOS-разработке, Swift, Objective-C, SDK, Rx, Cocoa и т.д.