居中自定义标题视图,其中包含 UIImage 和 UILabel



我检查了所有其他答案,但我无法使用他们所说的来使其工作:

我有一个UIView myTitle,带有Frame(0,0,320,44),其中包含UIImage和UILabel。UIImage和UILabel很好,看起来也不错,但我似乎不知道如何居中myTitle。

self.navigationItem.titleView =  myTitle; 

它显示并看起来不错,但向左太远了。它似乎(逻辑上)与左侧栏按钮(后退按钮)有关,该按钮是当我按下控制器时由框架自动生成的。该栏按钮具有基于此而变化的宽度,并基于此更改 myTitle 视图的 x。

那么,我

在哪里可以获得左(和右)栏按钮的宽度,以便我弄清楚如何将 myTitle 放在中心?

我注意到当我更改 myTitle 的宽度时,它(逻辑上)会居中(因为 UIImage 和 UILabel 在 myTitle 中居中)。

要获得更多控制,请使用如下代码进行设置,而不是自动生成左栏按钮。

UIButton *leftButton =[UIButton buttonWithType:UIButtonTypeCustom];
[leftButton setFrame:CGRectMake(0, 0, 100, 44)];
[leftButton setTitle:@"back" forState:UIControlStateNormal];
[leftButton setBackgroundColor:[UIColor greenColor]];
[leftButton addTarget:self action:@selector(backButtonClicked) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.leftBarButtonItem =[[UIBarButtonItem alloc] initWithCustomView:leftButton];

现在,您可以完美地调整标题视图的框架,而不会遇到很多问题。

我找到了两种工作方式;

  • 就像Cy-4AH建议的那样,使用自动布局;她/他的答案将是答案。
  • 不使用自动布局,它
  • 比我想象的要简单得多;如果我使标题视图宽度完全适合它的内容,它会自动工作;这是在内部通过自动布局完成的吗?

希望这对某人有所帮助。

最新更新