ios中navigationItem的titleView如何居中

FSL软件安装 阅读详情

开发过程中,发现titleview很难居中,通过各种尝试终于找到了解决方法。

首先清楚你个概念:

1.leftBarButtonItem,导航条中左侧button。

2.rightBarButtonItem,导航条中右侧button。

3.titleview,不用介绍了吧,就是标题。

问题原因:

经过尝试,发现titleview的起点位置和尺寸依赖于leftBarButtonItem和rightBarButtonItem的位置。

解决方案:

设置titleview之前,先初始化leftBarButtonItem和rightBarButtonItem的位置,然后根据leftBarButtonItem和rightBarButtonItem的位置来使titleview居中。

 

 

//以下使参考代码。

//必须放在 leftBarButtonItem和rightBarButtonItem初始化之后调用

- (void)setDisplayCustomTitleText:(NSString*)text

{

    // Init views with rects with height and y pos

    UIView *titleView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];

    // Use autoresizing to restrict the bounds to the area that the titleview allows

    titleView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;

    titleView.autoresizesSubviews = YES;

    titleView.backgroundColor = [UIColorclearColor];

    UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];

    titleLabel.tag = kUIVIEWCONTROLLER_LABEL_TAG;

    titleLabel.backgroundColor = [UIColor clearColor];

    titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:16];

    titleLabel.textAlignment = UITextAlignmentCenter;

    titleLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

    titleLabel.textColor = TC_CNavigationTitleColor;

    titleLabel.lineBreakMode = UILineBreakModeClip;

    titleLabel.textAlignment = UITextAlignmentCenter;

    titleLabel.autoresizingMask = titleView.autoresizingMask;

    

    CGRect leftViewbounds = self.navigationItem.leftBarButtonItem.customView.bounds;

    CGRect rightViewbounds = self.navigationItem.rightBarButtonItem.customView.bounds;

    

    CGRect frame;

    CGFloat maxWidth = leftViewbounds.size.width > rightViewbounds.size.width ? leftViewbounds.size.width : rightViewbounds.size.width;

    maxWidth += 15;//leftview 左右都有间隙,左边是5像素,右边是8像素,加2个像素的阀值 5 + 8 + 2

    

    frame = titleLabel.frame;

    frame.size.width = 320 - maxWidth * 2;

    titleLabel.frame = frame;

    

    frame = titleView.frame;

    frame.size.width = 320 - maxWidth * 2;

    titleView.frame = frame;

    // Set the text

    titleLabel.text = text;

        // Add as the nav bar's titleview

    [titleView addSubview:titleLabel];

    self.navigationItem.titleView = titleView;

    [titleView release];

    [titleLabel release];

}

ASPP - 空洞空间金字塔池化 文章目录1 空洞卷积1.1 空洞卷积的理解1.1.1 一维1.1.2 二维1.2 空洞卷积的优劣2. ASPP3. 代码 1 空洞卷积 1.1 空洞卷积的理解 1.1.1 一维 (a) 正常卷积:输入特征 Input feature,kernel = 3,stride = 1,pad = 1,输出特征 Output feature。 (b) 空洞卷积:与图 (a) 不同之处在于 pad = 2,同时引入一个 rate = 2(表示卷积核中参数间间隔的超参)。   还可通过下图进一步理解普通卷积与空洞卷 阅读详情

相关推荐

Claude Code VSCode集成开发指南:AI编程助手完整配置

Claude Code与Visual Studio Code的深度集成为开发者提供了强大的AI编程支持。本文详细介绍Claude Code VSCode扩展的安装配置、功能特性和实际应用方法。通过完整的配置流程和代码示例,帮助开发者充分利用Claude AI的智能编程能力。文章涵盖从环境搭建到高级功能应用的完整指南,包括代码自动补全、智能重构、实时代码分析等核心功能的使用技巧,以及与现有开发工作流的整合方案。

2501_93058131的博客 5978

导航栏 titleView 位置

今天新接到的界面的导航栏上面有一个搜索框(之前也有过,但之前没注意到) 按照设计给的图设置坐标。一 我的想法:为了好控制搜索框和客服按钮的位置,大小及两者距离,我决定将两者均放到titleView上面。二 我的做法: 1,先创建backView(UIView) UIView *backView = [[UIView alloc] initWithFrame:CGRectMake(0,

si1279571489的博客 5172

cocos creator接入微信登陆sdk ios篇

cocos creator接入微信登陆sdk ios篇 背景已经在Android篇里面交代过了,有兴趣的朋友可以再看看Android篇 步骤 去微信开放平台下载ios平台所需要的sdk 在“info”标签栏的“URL type“添加“URL scheme”为你所注册的应用程序id 在“info”标签栏的“LSApplicationQueriesSchemes“添加weixin 将SDK文件中...

凤小鹿的博客 6362

iOS 导航栏TitleView居中的问题

最近在开发中遇到了一个问题,我自定义了一个titleVIew放在navigationBar上面,在iPhone6 和6P上面显示 是 居中的,但是在 5s 和4s 上面显示的时候明显的偏向右边,因为我的titleView 上面有一个lab labText 长度会变化,所以导致我的titleView 显示出现了居中问题。 经过查阅多方资料,我了解到,titleVIew 默认情况下 是居中显示的,出

wbxiaowangzi的博客 4195

Cursor Pro版保姆级开通教程:绕过7天试用,支付宝一步搞定(附地区报错解决方案)

本文详细介绍了Cursor Pro版的订阅流程,包括支付宝支付步骤和解决区域报错的实用方案。针对开发者常见的网络问题和云服务器配置需求,提供了从本地环境调整到云端部署的完整指南,帮助用户高效解锁Pro版的代码补全、私有代码库等核心功能。

weixin_28710999的博客 2087

【Unity】YooAsset与HybridCLR:高效资源管理与代码热更的黄金组合

本文深入探讨了Unity开发中YooAsset与HybridCLR的组合应用,为需要长期运营的项目提供了完整的资源与代码热更新解决方案。YooAsset作为高效的资源管理框架,简化了AssetBundle的打包、加载与热更流程;而HybridCLR则攻克了IL2CPP模式下C#代码无法热更的难题。两者结合,实现了从资源到逻辑的平滑在线更新,极大提升了开发迭代与线上维护的效率。

weixin_29006701的博客 277

navigationItem的设置和titleView的设置

设置导航栏中间的标题    self.navigationItem.title = @"title"; 设置导航栏的标题文字颜色    [self.navigationController.navigationBar setBarTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor grayColor]}];

github_34770902的博客 1万+

【GAMES201学习笔记】物质点法入门

《GAMES201》 学习笔记

捕鱼维的个人小站 9198

self.navigationItem.titleView不居中

为什么self.navigationItem.titleView有时候不能居中呢 答一:UINavigationBar automatically centers its titleView as long as there is enough room. If the title isn't centered that means that the title view is

Nero的专栏 1万+

STC32G电调调试血泪史:从TPH1R403NL MOS管烧毁到PWM信号异常排查全记录

本文详细记录了STC32G无刷电调调试过程中的常见问题与解决方案,包括MOS管烧毁、PWM信号异常等关键故障排查。通过电源系统检测、驱动电路验证及三相平衡调试等实战经验,帮助硬件爱好者快速定位问题,提升电调调试效率。特别针对TPH1R403NL等MOS管的保护措施进行了重点分析。

weixin_33736048的博客 551

开源 AHB不对称半桥反激电路设计(六)死区时间,谐振腔电流,谐振电感函数表达式

电流跌落可以使副边电流峰值和有效值降低,减小损耗,但如果开关管 S2 导通期间,谐振电流谐等于励磁电流,即副边电流A 点降至 0,会在原边变压器内形成环流,产生损耗,同时也不利于副边同步整流管驱动的正常工作,为了保证开关管 S2 导通期。在开关管 S1 和开关管 S2 均关断的死区时间内,谐振电流给原边开关管结电容和副边整流管结电容充放电,因此会引起开关 S1 关断瞬间电流跌落与开关 S2 关断瞬间电流震荡现象,受寄生参数影响原边谐振电流波形和副边电流波形如图。降到最低,变压器以最高效率向副边传递能量。

【Simon】的博客 1225

iOS中navigationItem的titleView如何居中

iOS中navigationItem的titleView如何居中

qq_33777090的博客 2432

(第14天)Veritas NetBackup(NBU) 配合 RMAN 脚本备份 Oracle 数据库

NBU(Veritas Netbackup)是企业中比较常用的备份软件,通常用于备份企业使用中的系统,数据库,文件等等,通常是搭配 Oracle RMAN 来进行备份 Oracle 数据库。

LuciferLiu_DBA 1640

iOS11 0设置导航栏self navigationItem titleView居中

前言 self.navigationItem.titleView的位置跟leftBarButtonItem,rightBarButtonItem的大小有关。 leftBarButtonItem,导航条中左侧button。 rightBarButtonItem,导航条中右侧button。 titleview,不用介绍了吧,就是标题。 titleview的起点位置和尺寸依赖于leftBarButt...

weixin_33918114的博客 561

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

IOS在导航栏上居中显示分段控件(UISegmentedControl)

IOS在导航栏上居中显示分段控件(UISegmentedControl)

Friday_Holiday的专栏 1913

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

titleView发生偏移、titleView与masonry、titleView的设置、titleView的使用

navigationItem的titleView属性的设置本身是很简单的,容易出问题的原因是自动化布局与frame混用造成的。 本文一步一步的讲解,力求找到问题的起源。如果你也在这块同样遇到问题,不妨耐下心来,一起看看怎么回事。 titleView这个属性默认值是nil。也就是说,它是不存在的。如果开发者使用[self.navigationItem.titleView addsubV...

CCCCCC1990的博客 884

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

self.navigationItem.titleView 不居中显示的问题

自定义一个AUIView, AUIView * v=[AUIView new]; self.navigationItem.titleView = v; 在AUIView类内重写 setFrame -(void)setFrame:(CGRect)frame { [supersetFrame:frame]; self.center=CGPoi...

weixin_30586257的博客 335

使用坐标系转化实现navigationItem titleview居中。

百度搜索了下titleview居中,  没找到满意答案, 研究了一下。发现使用坐标系转化可以很完美的实现titleview的居中。 直接上代码吧 UIView *title_ve = [[UIView alloc]initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 44)];

u010212550的专栏 2549

iOS 11 navigationItem.titleView 适配

最近由于Apple 更新了iOS 11版本,在系统升级之后,发现项目中之前适配好的titleView 发生了如下变化: iOS 11 之前 iOS 11   WTF? 在iOS 11中titleView的宽度设置了没有效果,也没有拉伸展示,缩成一坨了。项目中有好多地方用到了titleView这个属性,怎么办? 打开Xcode 查看视图层级功能,发现在iOS 11 中Apple

a411360945的专栏 5686

iOS 11 之后 UiSearchBar 添加到 navigationItem.titleView

 // 在iOS11 之后适配titleView    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];    button.frame =CGRectMake(0, 0, kScreenWidth, 44);    self.navigationItem.titleView = button;    _searchB...

无名小人物的博客 2625

实现 titleview 居中 navigationItem

viewDidLoad里: let width: CGFloat = 100 let ScreenWidth = UIScreen.main.bounds.width //第一步,设置titleView为一个空白UIView(作背板) navigationItem.titleView = UIView(frame: Rect(0, 0, ScreenWidth, 44)) //第二步,这是目标

Eric's Blog 2410

IOS navigationItem.titleview上加控件时注意问题

navigationItem上titleview加控件时,不应该超过自定义的uiview *titleview 的fra

u013329151的专栏 3557
上一篇: SVN命令
下一篇: IOS之同步请求、异步请求、GET请求、POST请求
focusjava
博客等级 码龄14年 127粉丝 528原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值