怎么导航栏背景居中html,iOS - 设置导航栏之标题栏居中、标题栏的背景颜色 朱雀 2022-10-06 11:59 204阅读 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; [04b7f078c6b8]: /images/20221005/a2aadd8c861240de9c14aa3006f98db7.png
还没有评论,来说两句吧...