我已经尝试过这里发布的所有答案,并且已经获得了多行支持,但是我需要文本从现在开始从上面开始。
请查看屏幕截图,其中显示了我希望标题标签从何处开始。

这是我的代码-

UILabel *titleLabel = [[UILabel alloc]initWithFrame:CGRectMake(0.0, 0.0, [UIScreen mainScreen].bounds.size.width, 44)];
[titleLabel setNumberOfLines:3];
[titleLabel setBackgroundColor:[UIColor darkGrayColor]];
[titleLabel setTextColor:[UIColor whiteColor]];
[titleLabel setFont:[UIFont fontWithName:@"HelveticaNeue-CondensedBlack" size:30.0]];
[titleLabel setText:@"LET'S GET YOU REGISTERED"];

self.navigationItem.titleView = titleLabel;

我尝试用UIView替换标签,但还是没有运气。
我的自定义导航控制器文件中的代码是-
@interface UINavigationBar (myNave)
- (CGSize)changeHeight:(CGSize)size;
@end

@implementation UINavigationBar (customNav)
- (CGSize)sizeThatFits:(CGSize)size {
    CGRect screenRect = [[UIScreen mainScreen] bounds];
    CGFloat screenWidth = screenRect.size.width;
    CGFloat screenHeight = screenRect.size.height * 0.15;
    CGSize newSize = CGSizeMake(screenWidth,screenHeight);
    return newSize;
}
@end

请帮忙。

最佳答案

您应该只设置numberOfLines以适合任何文本长度。您可以通过将行数设置为零来做到这一点。同样,大小为30的字体将不允许多行文本适合UINavigationItem(无sizeToFit)。您可以考虑将UINavigationBar设置为清晰,并创建自己的titleView以适合屏幕顶部(如果您需要使其尺寸为30)。

但是,与此类似的内容将为您提供多行文本,使其完全适合导航:

UIView *titleView = [[UIView alloc]initWithFrame:CGRectMake(50, 0, self.navigationController.navigationBar.frame.size.width-100, self.navigationController.navigationBar.frame.size.height)];

UILabel *titleLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, titleView.frame.size.width, titleView.frame.size.height)];
[titleLabel setTextAlignment:NSTextAlignmentCenter];
[titleLabel setFont:[UIFont fontWithName:@"HelveticaNeue" size:12.0]];
[titleLabel setNumberOfLines:0];

NSString *titleString = @"This is a\n multiline string";
[titleLabel setText:titleString];

[titleView addSubview:titleLabel];

[self.navigationController.navigationItem setTitleView:titleView];

关于ios - iOS多行标题栏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26344286/

10-13 04:02