怎么导航栏背景居中html,iOS - 设置导航栏之标题栏居中、标题栏的背景颜色

朱雀 2022-10-06 11:59 326阅读 0赞

本章实现效果:

04b7f078c6b8

Untitled.gif

前言:

项目中很多需求是要求自定义标题栏居中的,本人最近就遇到这中需求,如果用系统自带的titleView设置的话,不会居中,经过尝试,发现titleview的起点位置和尺寸依赖于leftBarButtonItem和rightBarButtonItem的位置。下面给出我的解决方案

首先自定义一个标题View

#import

@interface CustomTitleView : UIView

@property (nonatomic, copy) NSString *title;

@end

#import “CustomTitleView.h”

#import “Masonry.h”

@interface CustomTitleView ()

@property(nonatomic,strong)UILabel * titleLabel;//标题label

@property (nonatomic,strong) UIView *contentView;

@end

@implementation CustomTitleView

- (instancetype)init

{

self = [super init];

if (self) {

[self addSubview:self.contentView];

[self.contentView mas_makeConstraints:^(MASConstraintMaker *make) {

make.left.greaterThanOrEqualTo(self);

make.right.lessThanOrEqualTo(self);

make.center.equalTo(self);

make.bottom.top.equalTo(self);

}];

[self.contentView addSubview:self.titleLabel];

[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {

make.centerY.equalTo(self.contentView);

make.centerX.equalTo(self.contentView);

}];

}

return self;

}

- (void)setFrame:(CGRect)frame

{

[super setFrame:frame];

[self layoutIfNeeded];

}

- (UIView *)contentView

{

if (!_contentView) {

_contentView = [UIView new];

}

return _contentView;

}

-(UILabel *)titleLabel

{

if (!_titleLabel) {

_titleLabel = [[UILabel alloc] init];

_titleLabel.textColor = [UIColor whiteColor];

_titleLabel.font = [UIFont boldSystemFontOfSize:17];

_titleLabel.lineBreakMode = NSLineBreakByTruncatingTail;

_titleLabel.textAlignment = NSTextAlignmentCenter;

[_titleLabel setContentCompressionResistancePriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal];

_titleLabel.backgroundColor = [UIColor redColor];

}

return _titleLabel;

}

- (void)setTitle:(NSString *)title

{

self.titleLabel.text = title;

}

具体用法如下:

在当前页面的控制中只要写,即可实现上图的效果

CustomTitleView *titleView = [[CustomTitleView alloc] init];

titleView.backgroundColor = [UIColor greenColor];

titleView.frame = CGRectMake(0, 0, PDScreeenW, 44);

titleView.title = @”我是标题”;

self.navigationItem.titleView = titleView;

self.titleView = titleView;

UIBarButtonItem *rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@”” style:UIBarButtonItemStylePlain target:self action:nil];

self.navigationItem.rightBarButtonItem = rightBarButtonItem;

发表评论

表情:
评论列表 (有 0 条评论,326人围观)

还没有评论,来说两句吧...

相关阅读