7
votes

I have a tableview that contains custom cells with a label. I want to change the font of this label to "Roboto-Bold". But it's not working (still the same default font). What I did so far:

  • Downloaded "Roboto-Bold.ttf"
  • Add the font to my project
  • Modified info.plist adding: Fonts provided by application, item0 = Roboto-Bold.ttf
  • Added this code:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    EventOptionCell *cell = (EventOptionCell *)[tableView dequeueReusableCellWithIdentifier:@"EventOptionCell"];

    switch (indexPath.row) {
        case 0:
            cell.optionLabel.text = @"TEST NEW FONT";
            cell.optionLabel.font = [UIFont fontWithName:@"Roboto-Bold" size:20];
            cell.imageView.image = [UIImage imageNamed:@"icon-test.png"];
            break;

        default:
            break;
    }

    return cell;
}
3
Have you checked that the font was also added to your target?Cornelius
Sorry, I didn't understand what you mean, can you explain?Lücks
Select the font file in XCodes Project Navigator, then open the file inspector Utilities pane (Cmd-Option-0). You should see a "Target Membership" group there and the target of your project should have the checkbox checked. If it isn't check that and try again.Cornelius
Perfect!! Worked :) thanks!!!Lücks
Great! I added that as an answer, so that you can accept it if you likeCornelius

3 Answers

8
votes

Sometimes when you add a ttf file to an XCode project it will not be added to your target. This means that it will not be included in the compiled app bundle.

Select the font file in XCodes Project Navigator, then open the file inspector Utilities pane (Cmd-Option-0). You should see a "Target Membership" group there and the target of your project should have the checkbox checked. If it isn't check that and try again.

2
votes

If you did all above and still doesn't work. One more XCODE bug that can cause that - If you never used this custom font on storyboard/xib - add an hidden label with this font(from Interface Builder) and then suddenly it will recognise it programmatically...

-Xcode 7.3.1 - still have this bug

1
votes

If you added it to plist and project, check if font family names is exactly same as file name, they are sometimes different a little (maybe 'Robot Bold' or so) ...

Snippet which might help (from How to check if a font is available in version of iOS? )

NSArray *fontFamilies = [UIFont familyNames];

for (int i = 0; i < [fontFamilies count]; i++) {
    NSString *fontFamily = [fontFamilies objectAtIndex:i];
    NSArray *fontNames = [UIFont fontNamesForFamilyName:[fontFamilies objectAtIndex:i]];
    NSLog (@"%@: %@", fontFamily, fontNames);
}