2013-06-11 3 views
1

Я хочу создать многострочный BackBarButtonItem. теперь моя спина дисплей кнопки, как это,Как создать многострочный backBarButtonItem в UINavigationBar

enter image description here

, но я хочу, чтобы отобразить его, как это, цвет не имеет значения,

enter image description here

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

+0

Вы можете быть в состоянии использовать изображение ... Я не верю, что 'UIBarButtonItem' поддерживает многострочный текст. –

+0

@SimonM thanx для ответа, вот что я имею в виду. но хочу передать его через такого эксперта, как вы ... –

ответ

0

Вы можете сделать это с помощью пользовательского изображения, UILabel (MSLabel), UIButton.

MSLabel Используется для изменения пространства между двумя строками UILabel. Потому что UILabel не предоставляет никаких свойств для этого.

После того, как вы добавили MSLabel в свой проект, используйте этот код. Рекомендованный размер для backbtn.png составляет 48 * 30.

#import "MSLabel.h" 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // Set the custom back button 
    UIImage *buttonImage = [[UIImage imageNamed:@"backbtn.png"] 
          resizableImageWithCapInsets:UIEdgeInsetsMake(0, 13, 0, 5)]; 



    //create the button and assign the image 
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [button setBackgroundImage:buttonImage forState:UIControlStateNormal]; 

    MSLabel *lbl = [[MSLabel alloc] initWithFrame:CGRectMake(12, 4, 65, 28)]; 
    lbl.text = @"Account Summary"; 
    lbl.backgroundColor = [UIColor clearColor]; 
    //lbl.font = [UIFont fontWithName:@"Helvetica" size:12.0]; 
    lbl.numberOfLines = 0; 

    lbl.lineHeight = 12; 
    lbl.verticalAlignment = MSLabelVerticalAlignmentMiddle; 
    lbl.font = [UIFont fontWithName:@"Helvetica" size:12]; 

    [button addSubview:lbl]; 

    //set the frame of the button to the size of the image (see note below) 
    button.frame = CGRectMake(0, 0, 70, buttonImage.size.height); 

    [button addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside]; 

    //create a UIBarButtonItem with the button as a custom view 
    UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithCustomView:button]; 
    self.navigationItem.leftBarButtonItem = customBarItem; 

} 

-(void)back { 
    NSLog(@"Dilip Back To ParentViewController"); 
    // Tell the controller to go back 
    [self.navigationController popViewControllerAnimated:YES]; 
} 

Результат будет отображаться следующим образом. Используйте свое изображение для лучшего результата.

enter image description here

+0

Nice код .. оцените .... –

0

В этом случае вы должны использовать пользовательские кнопки и использовать фоновое изображение на этом button.Because я думаю, что это не может быть possible.See для пользовательской кнопки

UIButton *backBtn = [[UIButton alloc] initWithFrame:CGRectMake(10.0f,6.5f,60.0f,30.0f)]; 
    [backBtn setBackgroundImage:[UIImage imageNamed:@"accountSummary"] forState:UIControlStateNormal]; 
    [backBtn setBackgroundImage:[UIImage imageNamed:@"accountSummary"] forState:UIControlStateHighlighted]; 
    [backBtn addTarget:self action:@selector(accountSummaryBtnPressed:) forControlEvents:UIControlEventTouchUpInside]; 

    UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithCustomView:backBtn]; 
    [self.navigationItem setLeftBarButtonItem:leftButton]; 


- (void)accountSummaryBtnPressed:(id)sender 
{ 
    //--------- do stuff for account summary 
} 
+0

Thanx for reply, is put image is batter than puting button? –

+0

Кнопка будет лучше и установить изображение на кнопке. Потому что вы не можете вызвать метод действия в UIImageView. –

+0

Если поддержка локализации отсутствует, тогда этот метод должен быть точным. – Adithya

0

Что я верю, что вы можете создать CustomView с ImageView И Прозрачная метка с numberOflines более двух или того, на что вы хотите ограничить ее, затем замените кнопку «Назад» с помощью кнопки «Барбтонтон», инициированной с помощью CustomVIew, которая может решить вашу проблему, Надеюсь, полностью

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