居中包含 UIImage 和 UILabel 的自定义 TitleView

Posted

技术标签:

【中文标题】居中包含 UIImage 和 UILabel 的自定义 TitleView【英文标题】:Center custom TitleView containing an UIImage and UILabel 【发布时间】:2014-01-14 14:37:09 【问题描述】:

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

我有一个 UIView myTitle,其 Frame (0,0,320,44) 包含一个 UIImage 和一个 UILabel。 UIImage 和 UILabel 很好,看起来很好,但我似乎无法弄清楚如何将 myTitle 居中。

self.navigationItem.titleView =  myTitle; 

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

那么,我在哪里可以获得左侧(和右侧)条形按钮的宽度,以便弄清楚如何将 myTitle 放在中间?

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

【问题讨论】:

忘记框架,使用自动布局。 【参考方案1】:

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

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];

现在你可以完美的调整titleView的frame了。

【讨论】:

【参考方案2】:

我发现了两种工作方式;

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

希望这对某人有所帮助。

【讨论】:

以上是关于居中包含 UIImage 和 UILabel 的自定义 TitleView的主要内容,如果未能解决你的问题,请参考以下文章

水平居中 UIToolbar 中的所有项目,包括使用 UILabel 的自定义视图

使用 AutoLayout 在 UITableViewCell 中垂直居中多个 UILabel?

使用带有文本的 UIImage 或 UILabel 用于自动缩放的文本

UIButton中图像下的标签

使用编程约束 UIKit 使 UIImage 居中(水平或垂直)

iOS 7 中的自定义后退指示器图像未垂直居中