在UINavigationBar中动态调整字体大小

时间:2013-09-26 22:06:11

标签: ios objective-c fonts resize uinavigationbar

我想做的是:

我有一个导航栏,使用覆盖整个栏的图像,看起来像这样:

enter image description here

现在我想将标题放在栏的黑色部分,因此它不会影响图标。 这个标题可能很短或很长。所以我尝试了这个:

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 44)];
label.backgroundColor = [UIColor blackColor];
label.numberOfLines = 2;
label.minimumFontSize = 8.;
label.adjustsFontSizeToFitWidth = YES;
label.font = [UIFont boldSystemFontOfSize:16.0];
label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
label.textAlignment = UITextAlignmentCenter;
label.textColor =[UIColor whiteColor];
label.text = name;
self.navigationItem.titleView = label;

但这不起作用,因为标签的宽度如果需要在标签上增加并超过200px。

那我该怎么办? 谢谢你的帮助。

PS:相机图标不是按钮。

1 个答案:

答案 0 :(得分:0)

您的代码在iOS 7.0中正常运行

由于您使用的是UITextAlignmentCenter(而不是NSTextAlignmentCenter),并且还使用了minimumFontSize,我假设您运行的是早期版本的iOS,因为这些版本在iOS 6.0中都已弃用

主要问题是如果numberOfLines设置为1,adjustsFontSizeToFitWidth仅适用于iOS6及更早版本

正如您在apple开发人员文档中所看到的那样

https://developer.apple.com/library/ios/documentation/uikit/reference/UILabel_Class/Reference/UILabel.html#//apple_ref/occ/instp/UILabel/adjustsFontSizeToFitWidth

如果你一定想要两行并且还想要调整字体大小...你可以只使用你的名字字符串的长度属性,它会告诉你字符串中有多少个字符,然后你可以设置字符串大小根据字符串的长度