无法在UIButton上更改自定义UIFont大小

时间:2013-07-05 17:45:58

标签: ios uibutton uifont

我有一个按钮,我使用自定义UIFont来显示文本。字体正确加载并正确应用于按钮标题。我的问题是我似乎无法改变字体大小:

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self action:@selector(loginButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
[button setTitle:@"Login" forState:UIControlStateNormal];
button.frame = CGRectMake(63.0, 200.0, 194.0, 60.0);
button.titleLabel.font = [UIFont fontWithName:@"My-Font" size:8.0f];
[self.view addSubview:button];

无论我输入什么字体大小,我都会得到一些默认大小。另一方面,如果我做这样的事情:

button.titleLabel.font = [UIFont systemFontOfSize:32.0f];

我得到32号字体,但是,当然,我没有得到我的自定义字体。 那么,如何设置自定义字体的大小?

(我使用Xcode 4.6.3)

5 个答案:

答案 0 :(得分:2)

这样做:

    NSMutableDictionary *fontsByFamilyName = [NSMutableDictionary dictionary];
    NSArray *sortDescriptors = [NSArray arrayWithObject:[[[NSSortDescriptor alloc] initWithKey:@"self" ascending:YES] autorelease]];

    NSArray *familyNames = [[UIFont familyNames] sortedArrayUsingDescriptors:sortDescriptors];
    for (NSString *aFamilyName in familyNames) {
        NSArray *fontNames = [[UIFont fontNamesForFamilyName:aFamilyName] sortedArrayUsingDescriptors:sortDescriptors];

        [fontsByFamilyName setObject:fontNames forKey:aFamilyName];
        NSLog(@"fonts :%@", fontsByFamilyName);           
    }

查找字体的“iOS”名称...我用这种方法找到了我的用户名。如果不这样做,让我们检查一下你添加字体的方式(可能是一个忘记的动作)。 资料来源:http://forgecode.net/2010/08/uifont-name-grabber/

答案 1 :(得分:2)

要获取必须在fontWithName:size:中传递的字体名称,请使用 Font Book 应用打开字体,然后查找PostScript name属性。确保您已将其添加到Info.plist文件中。

答案 2 :(得分:2)

好像您的UIFont对象未正确创建并返回nil

这是我在推出自定义字体时发现的最佳教程。祝你好运;)

http://refactr.com/blog/2012/09/ios-tips-custom-fonts/

答案 3 :(得分:1)

有趣的是,它原来是我的Mac。当我给我的朋友安装它们时,他没有任何问题。 我的Mac是旧的,所以也许这就是原因。以下是规格:

**Mac:** MacBook Pro 15" (Late 2008)
**Processor:**  2.4 GHz Intel Core 2 Duo
**Memory:** 4 GB 1067 MHz DDR3
**Graphics:** NVIDIA GeForce 9600M GT 256 MB

答案 4 :(得分:-1)

为'My-Font'传入'nil'可以为默认字体调整文本大小 - 无需知道实际使用的字体是什么:

button.titleLabel.font = [UIFont fontWithName:nil size:10.0f];