居中包含 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 用于自动缩放的文本