iOS:导航控制器标题不居中

时间:2015-09-09 14:03:43

标签: ios objective-c uinavigationcontroller uinavigationbar uinavigationitem

我有一个导航控制器,左侧是自定义后退按钮。我以编程方式执行此操作,因此这不是自动布局问题。我的问题是导航控制器标题没有居中,它是在屏幕的右侧。我记得在这一段时间内看到了一个修复,将一些类型的固定空间设置为正确的条形按钮项目,但我现在似乎无法找到类似的东西。

有人可以告诉我如何将导航控制器标题设置为居中,如果标题对于其空间来说太大,请设置导航栏标题以修复其字体大小以适应标题空间的宽度。这一切都需要以编程方式完成,谢谢!

5 个答案:

答案 0 :(得分:7)

在导航控制器中,默认情况下,视图控制器A按下当前视图控制器B.A的标题将显示在视图控制器B的backBarButton中。

导航控制器标题未居中也是因为前一个视图控制器标题太长。

要解决这个问题,请在视图控制器A的viewWillAppear中使用它:

self.navigationItem.backBarButtonItem= UIBarButtonItem(title: "", 
    style: UIBarButtonItemStyle.Plain, target: nil, action: nil)
self.navigationItem.backBarButtonItem!.title = ""`

答案 1 :(得分:3)

您必须在导航中添加自定义视图

    UIView *view = [[UIView alloc]initWithFrame:CGRectMake(10, 0, 150, 44)];

    UILabel *titleLabel=[[UILabel alloc] initWithFrame:CGRectMake(10, 165,370, 25)];
    titleLabel.text=@"Home";
    titleLabel.textColor=[UIColor whiteColor];
    [view addSubview:titleLabel];    
    [self.navigationController.navigationBar addSubview:view];

答案 2 :(得分:2)

试试这个,它会对你有帮助并且经过测试。

目标C版

UIButton * button = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 50, 50)];
    [button addTarget:self action:@selector(yourSelector:) forControlEvents:UIControlEventTouchUpInside];
    [button setTitle:@"<" forState:UIControlStateNormal];

    button.titleEdgeInsets = UIEdgeInsetsMake(-3, -15, 3, 15);
    [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];

    UIBarButtonItem *leftItem = [[UIBarButtonItem alloc]initWithCustomView:button];
    self.navigationItem.leftBarButtonItem = leftItem;

Swift版本

button = UIButton(frame: CGRectMake(0, 0,50, 50))
        button?.addTarget(self, action: "backButtonTapped:", forControlEvents: UIControlEvents.TouchUpInside)
        button?.setTitle("<", forState: .Normal)
        button?.titleLabel?.font = UIFont(name: kFontHelveticaNeueRegular, size: 30)
        button?.titleEdgeInsets = UIEdgeInsetsMake(-3, -15, 3, 15)
        button?.setTitleColor(UIColor.whiteColor(), forState: .Normal)

        var leftItem = UIBarButtonItem(customView: button!)
        controller.navigationItem.leftBarButtonItem = leftItem

答案 3 :(得分:2)

在Utilities类中添加以下方法

[Utilities setTitle:@"Title for View Controller" forViewController:self];

跨视图控制器使用如下

tk.Label.__init__

答案 4 :(得分:1)

添加leftbarbutton和Rightbarbutton。通常后退按钮存在。如果添加一个空的右侧栏按钮,标题将居中。