iOS系统导航栏自定义标题动画跳变解析

本文深入探讨了iOS系统导航栏在自定义标题视图时可能出现的动画跳变问题,分析了导航栏内部布局、标题栏动画跳变的产生原因,并提出了防止跳变的解决方案,包括内容越界方案,旨在帮助开发者优化导航栏表现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果我们使用iOS系统的导航栏,自己设置titleView,leftItem和rightItem,当titleView长度达到一定时,push会出现titleView左右跳变的情况,本文将分析跳变原因及解决办法。

导航栏的内部布局

在一个全新的APP,自定义导航栏的左中右后,查看布局,会发现,导航栏内部布局如下

在这里插入图片描述

设置了自定义leftItem,titleView和rightItem,在导航栏中,我们自定义的view都会被_UITAMICAdaptorView包裹,其中leftItem和rightItem在_UITAMICAdaptorView外还会包裹一层_UIButtonBarStackView,最后布局在_UINavigationBarContentView中。

在导航栏内部布局的左边块、中间块和右边块,以下简称ABC,整个屏幕宽为Width。

以下以iPhone XS Max为例,gap1为20,gap2为6。

安全区域

A不论宽度如何(包括为0),一定会距离左边gap1。

C不论宽度如何(包括为0),一定会距离右边gap1。

B就算再宽,也一定会距离A和C各gap2。

在这里插入图片描述(A设置宽40,B设置宽414,C设置宽40)

当A和C宽度设为0时,B距离屏幕左右各(gap1+gap2)。

在这里插入图片描述

当A和C设置为nil时,B距离屏幕左右各12(gap3)。

在这里插入图片描述

对齐方式

当增加A的宽度时,A是以左边不动,右边增加来加宽的,B的宽度会因A宽度增加而压缩,A最宽不超过C.left-gap2*2。

在这里插入图片描述

当增加C的宽度时,C是以右边不动,左边增加来加宽的,B的宽度会因C宽度增加而压缩,C最宽不超过A.right-gap2*2。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值