iosobjective-cxcodeuinavigationbarfont-awesome-3.2

How to add font awesome On UINavigation Bar in Objective C


I am new in iOS. And I am facing a problem to add font awesome on UINavigation Bar. I am using code for Image Like this

  UIImage *listImage2 = [UIImage imageNamed:@"Image1.png"];
    UIButton *listButton2 = [UIButton buttonWithType:UIButtonTypeCustom];
    CGRect listButton2Frame = listButton2.frame;
    listButton2Frame.size = listImage2.size;
    listButton2.frame = listButton2Frame;

    [listButton2 setImage:listImage2 forState:UIControlStateNormal];
    [listButton2 addTarget:self
                    action:@selector(LogoutClick:)
          forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem *jobsButton2 =
    [[UIBarButtonItem alloc] initWithCustomView:listButton2];


    UIImage *listImage4 = [UIImage imageNamed:@"Image2.png"];
    UIButton *listButton4 = [UIButton buttonWithType:UIButtonTypeCustom];

    // get the image size and apply it to the button frame
    CGRect listButton4Frame = listButton4.frame;
    listButton4Frame.size = listImage4.size;
    listButton4.frame = listButton4Frame;

    [listButton4 setImage:listImage4 forState:UIControlStateNormal];
    [listButton4 addTarget:self
                    action:@selector(ActualNotificationClick:)
          forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem *jobsButton4 =
    [[UIBarButtonItem alloc] initWithCustomView:listButton4];

    UIImage *listImage3 = [UIImage imageNamed:@"Image3.png"];
    UIButton *listButton3 = [UIButton buttonWithType:UIButtonTypeCustom];

    // get the image size and apply it to the button frame
    CGRect listButton3Frame = listButton3.frame;
    listButton3Frame.size = listImage3.size;
    listButton3.frame = listButton3Frame;

    [listButton3 setImage:listImage3 forState:UIControlStateNormal];
    [listButton3 addTarget:self
                    action:@selector(EmployeeClick:)
          forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem *jobsButton3 =
    [[UIBarButtonItem alloc] initWithCustomView:listButton3];

    self.navigationItem.rightBarButtonItems= [NSArray arrayWithObjects:jobsButton2,jobsButton4, nil];
    self.navigationItem.leftBarButtonItems=[NSArray arrayWithObjects:jobsButton3, nil];

and for font awesome I am using code like this

lab.font = [UIFont fontWithName:@"FontAwesome" size:25];
lab.textColor =  [UIColor whiteColor];
lab.text =  [NSString awesomeIcon:FaCalendarChecko]; 

I need to add the font awesome Label instead of image on UINavigation Bar. The Image I am using is look like this enter image description here

I have Add Font Awesome like this code

newjoinlbl.font = [UIFont fontWithName:@"FontAwesome" size:8];
    newjoinlbl.textColor =  [UIColor whiteColor];
    newjoinlbl.text =  [NSString awesomeIcon:FaChild];
    UIButton *listButton2 = [UIButton buttonWithType:UIButtonTypeCustom];

    // get the image size and apply it to the button frame
    CGRect listButton2Frame = listButton2.frame;
    listButton2Frame.size = listImage2.size;
    listButton2.frame = listButton2Frame;

    [listButton2 setTitle:newjoinlbl.text forState:UIControlStateNormal];
    [listButton2 addTarget:self
                    action:@selector(LogoutClick:)
          forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem *jobsButton2 =
    [[UIBarButtonItem alloc] initWithCustomView:listButton2];

But It give me out put like this

enter image description here

Font awesome is work proper in view enter image description here

I just need to add font awesome label instead of Image on UINAvigation Bar. Thanks in Advance!


Solution

  • try like,

       UIImage *listImage4 = [UIImage imageNamed:@"Image2.png"];
    
    UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 30, 30)]; // desired frame
    
    [label setFont: [UIFont fontWithName:@"FontAwesome" size:25]]; //desired fornt
    
    
    UIButton *listButton4 = [UIButton buttonWithType:UIButtonTypeCustom];
    
    // get the image size and apply it to the button frame
    CGRect listButton4Frame = listButton4.frame;
    listButton4Frame.size = listImage4.size;
    listButton4.frame = listButton4Frame;
    
    [listButton4 setTitle:label.text forState:UIControlStateNormal];
    //  [listButton4 setImage:listImage4 forState:UIControlStateNormal];
    [listButton4 addTarget:self
                    action:@selector(ActualNotificationClick:)
          forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem *jobsButton4 =
    [[UIBarButtonItem alloc] initWithCustomView:listButton4];
    

    Update :

    Try to set attributed string like,

     UIImage *listImage4 = [UIImage imageNamed:@"Image2.png"];
    
    
    UIButton *listButton4 = [UIButton buttonWithType:UIButtonTypeCustom];
    
    // get the image size and apply it to the button frame
    CGRect listButton4Frame = listButton4.frame;
    listButton4Frame.size = listImage4.size;
    listButton4.frame = listButton4Frame;
    
    UIFont *font = [UIFont fontWithName:@"FontAwesome" size:25.0];
    NSDictionary *attrsDictionary = [NSDictionary dictionaryWithObject:font
                                                                forKey:NSFontAttributeName];
    NSAttributedString *attributedStr = [[NSAttributedString alloc] initWithString:@"yourTitleString" attributes:attrsDictionary];
    
    
    
    
    
    [listButton4 setAttributedTitle:attributedStr forState:UIControlStateNormal];
    
    
    [listButton4 addTarget:self
                    action:@selector(ActualNotificationClick:)
          forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem *jobsButton4 =
    [[UIBarButtonItem alloc] initWithCustomView:listButton4];
    

    Update 2

      UIFont *font = [UIFont fontWithName:@"FontAwesome" size:25.0];
    UIColor *color = [UIColor whiteColor];
    
    NSDictionary *attrsDictionary = [NSDictionary dictionaryWithObject:font
                                                                forKey:NSFontAttributeName];
    [NSDictionary dictionaryWithObjectsAndKeys:font,NSFontAttributeName,color,NSForegroundColorAttributeName, nil];
    
    NSAttributedString *attributedStr = [[NSAttributedString alloc] initWithString:@"yourTitleString" attributes:attrsDictionary];