How to add a multiline title bar in UINavigationController(如何在 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
推荐答案
只需设置 UILabel 的 setNumberOfLines: 0.请参阅下面的示例.
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;
同时减小Label的FontSize.在这种情况下是 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];
注意:您不能使用 UILabel 的 adjustsFontSizeToFitWidth: 属性,因为它不适用于 setNumberOfLines:0 在您的情况下,您将不得不使用 if 条件来处理它.
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.
这是根据width设置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 中添加多行标题栏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何在 UINavigationController 中添加多行标题栏
基础教程推荐
- navigator.geolocation.getCurrentPosition 在 Android 浏览器上 2022-01-01
- libGDX 从精灵或纹理中获取像素颜色 2022-01-01
- iOS4 创建后台定时器 2022-01-01
- Android:getLastKnownLocation(LocationManager.NETWORK_PROVIDER 2022-01-01
- iPhone - 获取给定地点/时区的当前日期和时间并将其与同一地点的另一个日期/时间进行比较的正确方法 2022-01-01
- 如何从 logcat 中删除旧数据? 2022-01-01
- 通过重定向链接在 Google Play 中打开应用 2022-01-01
- Cocos2d iPhone 非矩形精灵触摸检测 2022-01-01
- AdMob 广告未在模拟器中显示 2022-01-01
- NSString intValue 不能用于检索电话号码 2022-01-01
