如何在UINavigationController中添加多行标题栏 [英] How to add a multiline title bar in UINavigationController

查看:136
本文介绍了如何在UINavigationController中添加多行标题栏的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试在UINavigationController中添加两行标题栏

I have try to add a two line title bar in UINavigationController

我想根据字符串长度调整自动设置的字体大小。我的字符串最大大小为60我尝试通过以下代码实现

I want to adjust font size automatically set according to string length.My String max size goes to 60. I have try to implemented through following code

UILabel *bigLabel = [[UILabel alloc] init];
bigLabel.text = @"1234567890 1234567890 1234567890 1234567890 1234567890 123456";
bigLabel.backgroundColor = [UIColor clearColor];
bigLabel.textColor = [UIColor whiteColor];
bigLabel.font = [UIFont boldSystemFontOfSize:20];
bigLabel.adjustsFontSizeToFitWidth = YES;
bigLabel.clipsToBounds = NO;
bigLabel.numberOfLines = 2;
bigLabel.textAlignment = ([self.title length] < 10 ? NSTextAlignmentCenter : NSTextAlignmentLeft);
[bigLabel sizeToFit];

self.navigationItem.titleView = bigLabel;

它对我不起作为能帮助我吗?我必须为iPhone和iPad屏幕制作这个

It didn't work for me can you help me please. I have to made this for iPhone and iPad screen

推荐答案

只需设置 setNumberOfLines: 0 UILabel 。请参阅下面的示例。

Just set setNumberOfLines: 0 of UILabel. See the example below.

UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0.0, 0.0, 320.0, 44.0)];
[label setBackgroundColor:[UIColor clearColor]];
[label setNumberOfLines:0];
[label setTextColor:[UIColor whiteColor]];
[label setTextAlignment:NSTextAlignmentCenter];
[label setText:@"1234567890 1234567890 1234567890 1234567890 1234567890 123456"];
self.navigationItem.titleView = label;

设置左右 UIBarButtonItems - 您可以添加它们。

Set Left and Right UIBarButtonItems - you can add them.

UIBarButtonItem *leftBarButton = [[UIBarButtonItem alloc]initWithTitle:@"Left" style:UIBarButtonItemStylePlain target:self action:@selector(leftPress:)];
self.navigationItem.leftBarButtonItem = leftBarButton;

UIBarButtonItem *rightBarButton = [[UIBarButtonItem alloc]initWithTitle:@"Right" style:UIBarButtonItemStylePlain target:self action:@selector(rightPress:)];
self.navigationItem.rightBarButtonItem = rightBarButton;

同时减少<$ c的 FontSize $ C>标签。在这种情况下, 12
它看起来像这样:

Also decrease the FontSize of Label. It is 12 in this case. And it will look like this:

对于扩展问题:

只需制作以前代码中的一些更改 -

Just make some changes in previous code -

[label setNumberOfLines:2]; //Set it 2 instead of 0

NSString *titleStr = @"3456456676456464554541223434484384233456744444444456785643367";

//Check your string length then set font according to it.
//I have set font size according to your requirement
//which is 0-60.

if([titleStr length]>40 && [titleStr length]<=52){
    [label setFont:[UIFont fontWithName:@"Arial" size:13.0]];
}
else if([titleStr length]>52){
    [label setFont:[UIFont fontWithName:@"Arial" size:11.5]];
}

[label setText:titleStr];

注意:您无法使用 adjustsFontSizeToFitWidth : UILabel 的属性,因为它不适用于 setNumberOfLines:0 如果条件,则必须使用处理它。

Note: You can't use adjustsFontSizeToFitWidth: property of UILabel, because it doesn't work for setNumberOfLines:0 in your case you will have to handle it with if condition.

这是set 的方法fontSize UILabel 根据其宽度

This is method for set fontSize Of UILabel according to its width.

[label setNumberOfLines:1];
label.adjustsFontSizeToFitWidth = YES;
label.minimumFontSize = 1.0;

这篇关于如何在UINavigationController中添加多行标题栏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆