我为导航item.titleview
分配了一个标签问题是如果我使用系统字体,那么标签在导航栏上居中,但如果我使用自定义字体则不是。
答案 0 :(得分:2)
有一种方法可以在不添加自定义标签的情况下解决此问题。通过从self.title
方法设置viewDidLoad
,titleLabel将调整大小。但是,您需要使用故事板中定义的其他标题。当标签的内容没有改变时,它不会调用sizeToFit
(这对我而言是合理的)。
答案 1 :(得分:1)
这是一个已知的错误,但你可以通过以下方式规避它:
// adds a custom title label to the view
-(void)addNavBarTitle:(NSString*)titleText
{
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 360, 30)]; // NOTE: YOU CAN ADD PADDING TO THE LABEL BY CHANGING ITS Y ORIGIN
[label setFont:[UIFont fontWithName:@"Arial-BoldMT" size:14]]; // Use custom font if needed
[label setBackgroundColor:[UIColor clearColor]];
[label setTextColor:[UIColor whiteColor]];
[label setText:titleText]; // Dynamically change title. Else just explicitly set the string here
label.textAlignment = UITextAlignmentCenter;
[self.navigationController.navigationBar.topItem setTitleView:label];
[label release];
}
应该这样做, 快乐的编码!
答案 2 :(得分:0)
这看起来像个错误,所以请在https://bugreport.apple.com提交报告。包含您生成这些屏幕截图的代码将非常非常有用。
与此同时,您可以尝试通过相应titleView
的{{1}}属性自行定位标签。
答案 3 :(得分:0)
导航栏根据标签的框架大小对标签进行居中。如果您使标签的框架大于必要的大小或在可见文本后面添加了额外的空格,则它将显示在偏离中心的位置。
要使标签与文本一样大,请将sizeToFit
消息发送到标签。或者,如果您在笔尖中创建了标签,请选择标签并选择编辑器>从菜单栏中调整内容的大小。
您还可以将标签的textAlignment
属性设置为UITextAlignmentCenter
。
答案 4 :(得分:0)
以上三个答案都很有用..
总结一下:
titleView
来更新它的框架..仅仅是origin.x而宽度有效..值不是。size to fit
它没有用...然后我尝试了很多东西......制作一个按钮并设置其标题..等等这个bug仍然存在。所以解决方案对我来说很简单..因为我的导航栏标题没有改变..我只是用文本图像替换它。
使用
UIImageView *TitleImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"MyImage.png"]];
self.navigationItem.titleView = TitleImage;
[TitleImage release];
这对那些标题发生变化的人不起作用。谢谢大家..
答案 5 :(得分:0)
假设您支持iOS 5+,那么您希望使用[UINavigationBar appearance]
方法设置自定义标题字体,条形按钮字体,条形按钮图像等。
在这里阅读更多内容: http://www.raywenderlich.com/21703/user-interface-customization-in-ios-6