首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何让自定义的UINavigationItem titleView在改变大小后能够正确定位?

要让自定义的UINavigationItem titleView在改变大小后能够正确定位,可以按照以下步骤进行操作:

  1. 自定义titleView:创建一个自定义的UIView,并将其设置为UINavigationItem的titleView属性。可以使用任何你喜欢的方式来自定义这个视图,例如使用UILabel、UIImageView等。
  2. 自动布局:使用Auto Layout来确保titleView在改变大小后能够正确定位。可以使用约束来控制titleView的位置、大小和对齐方式。确保设置了正确的约束条件,以便在titleView大小改变时,它能够自动调整位置和大小。
  3. 更新约束:当需要改变titleView的大小时,更新相关的约束条件。可以通过修改约束的constant属性来改变titleView的大小。然后调用UINavigationItem的setNeedsLayout方法来触发布局更新。

以下是一个示例代码,展示如何实现自定义的UINavigationItem titleView的大小调整和定位:

代码语言:txt
复制
// 创建自定义的titleView
let customTitleView = UIView()
customTitleView.backgroundColor = UIColor.red

// 设置titleView
navigationItem.titleView = customTitleView

// 添加约束
customTitleView.translatesAutoresizingMaskIntoConstraints = false
customTitleView.widthAnchor.constraint(equalToConstant: 100).isActive = true
customTitleView.heightAnchor.constraint(equalToConstant: 40).isActive = true
customTitleView.centerXAnchor.constraint(equalTo: navigationItem.titleView!.centerXAnchor).isActive = true
customTitleView.centerYAnchor.constraint(equalTo: navigationItem.titleView!.centerYAnchor).isActive = true

// 修改titleView的大小
customTitleView.widthAnchor.constraint(equalToConstant: 200).isActive = true
customTitleView.heightAnchor.constraint(equalToConstant: 80).isActive = true
navigationItem.titleView?.setNeedsLayout()

在这个示例中,我们创建了一个红色的自定义titleView,并设置其初始大小为100x40。然后,我们通过约束将其水平和垂直居中于UINavigationItem的titleView中。最后,我们修改了titleView的大小为200x80,并调用setNeedsLayout方法来触发布局更新。

这样,无论你如何改变titleView的大小,它都会根据约束条件自动调整位置和大小,从而实现正确的定位。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

手把手带你撸一个网易云音乐首页(三)

,第一个冒出来想法就是 Cell 中放置 UICollectionView,它布局也很简单,直接用系统提供即可,不需要我们去自定义布局。...但是,通过观察你会发现它 UI 样式其实是有讲究,就是同一个页面中,它第二个 item 也需要露出一部分,这该如何去实现呢!...OK,那这个想法是不是正确呢!其实当你动手实践,你会发现这样实现后会有一个非常头疼 bug,那就当 item 滚动时候会出现遮挡,这用户体贴也太差了。...image 有人要问那是不是 UICollectionView 这个控件就只能按照屏幕大小来分页呢!答案当然是否定。我们还可以用自定义方式来实现分页滚动。...由于我们工程里首页控制器是继承自 UITableViewController ,所以我们可以直接设置它 UINavigationItem 属性中 leftBarButtonItem,titleView

2.3K10
  • iOS多控制器之UINavigationController&UITableBarController1. 多控制器2. UINavigationController3. UITableBarCont

    UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //创建窗口,根据屏幕大小设置...Paste_Image.png 2.5 修改导航栏内容 导航栏内容由栈顶控制器navigationItem属性决定 UINavigationItem有以下属性影响着导航栏内容 //左上角返回按钮...(nonatomic,retain) UIView *titleView; // 中间标题文字 @property(nonatomic,copy) NSString...navigationBar 是通过"导航控制器"对象调用 如果想改变导航条整体样式 那么应该找 navigationbBar 如果想改变导航条上内容找 navigationItem 3....UITabBarButtonUITabBar中得位置是均分,UITabBar高度为49。 UITabBar结构⼤大致如下图所示: ?

    1.3K40

    UINavigationController

    :(BOOL)animated; //回到根控制器(栈底控制器) - (NSArray *)popToRootViewControllerAnimated:(BOOL)animated; 如何修改导航栏内容...导航栏内容由栈顶控制器navigationItem属性决定 UINavigationItem有以下属性影响着导航栏内容 //左上角返回按钮 @property(nonatomic,retain...) UIBarButtonItem *backBarButtonItem; //中间标题视图 @property(nonatomic,retain) UIView *titleView...根据Segue执行(跳转)时刻,Segue可以分为2大类型 自动型:点击某个控件(比如按钮),自动执行Segue,自动完成界面跳转 按住Control键,直接从控件拖线到目标控制器 如果点击某个控件...需要设置一个标识 恰当时刻,使用perform方法执行对应Segue [self performSegueWithIdentifier:@"login2contacts" sender:nil];

    1.4K60

    六天完成一个简单iOS App - 第四天

    View并排存放,每个Viewframe为屏幕大小。...titleView也是添加在主控制器上,显示scrollView上面,保证titleView永远显示主控制器View上,不会随着scrollView滚动而滚动。...,titleView中button使用自定义CLTitleButton,便于自定义CLTitleButton内部设置button标题,颜色,字体大小等。...精华页面中全部界面的显示 自定义cell分析,因为全部页面中有4种cell,4种cell顶部和底部都是一样唯有中间部位不一样。这里自定义cell有两种方案。...中titleView上方添加下拉刷新View,使用scrollView代理方法监听tableViewcontentOffset,当开始下拉,contentOffset改变时显示刷新View,当滑动结束并且

    1.4K70

    Android自定义View实现方法,带你一步步深入了解View(四)

    如果说要按类型来划分的话,自定义View实现方式大概可以分为三种,自绘控件、组合控件、以及继承控件。那么下面我们就来依次学习一下,每种方式分别是如何自定义View。...那么剩下问题就是如何这个View界面上显示出来了,其实这也非常简单,我们只需要像使用普通控件一样来使用CounterView就可以了。...到了这里,一个自定义标题栏就完成了,那么下面又到了如何引用这个自定义View部分,其实方法基本都是相同布局文件中添加如下代码: <RelativeLayout xmlns:android="http...为了<em>能够</em>加深大家对这种<em>自定义</em>View方式<em>的</em>理解,下面我们再来编写一个新<em>的</em>继承控件。...好了,<em>自定义</em>View<em>的</em>功能到此就完成了,接下来我们需要看一下<em>如何</em>才能使用这个<em>自定义</em>View。

    1.2K90

    网易考拉 Android 通知栏适配全方案

    由于历史原因,Android发布之初对通知栏Notification设计相当简单,而如今面对各式各样通知栏玩法,谷歌也不得不对其进行更新迭代调整,增加新功能同时,也不断地改变样式,试图迎合更多人口味...大尺寸小图标部分机型上显示不正确 问题详情 这个问题主要在部分机型4.X系统上遇见,小图标大小没有按照24dp裁剪,而是采用了桌面图标一样大小96dp。...理想是美好,但现实是残酷。使用这种方式自定义布局,会存在与原生通知栏消息样式不一致可能,包括小图标/大图标的大小,字体大小与颜色,时间显示方式(不同版本时间显示位置和样式都不一样)。...背景色透明,通过特殊方式拿到通知栏字体颜色和字体大小。 ? 其中,第一种方案简单,能够兼容所有厂商机型。例如京东固定背景色为黑色,字体为红色。...因此,emoji表情适配其实相对较简单,就是根据不同系统版本实现不同支持。当然,如果需要简化那么只需要让运营配置Unicode 6版本emoji表情就能够适配4.4+版本系统了!

    5.1K11

    控制器和应用数据存储

    :(BOOL)animated;        回到根控制器:- (NSArray *)popToRootViewController ainimated:(BOOL)animated;     3)UINavigationItem...(nonatomic, retain) UIView *titleView; //中间标题文字 @property(nonatomic, copy) NSString *title; //...;      2)、Documents保存应用运行时生成需要持久化数据,iTunes同步设备时会备份该目录;    3)、tmp保存应用运行时所需临时数据,使用完毕再将相应文件从该目录删除。...3)、使用NSKeyedArchiver对自定义对象进行归档, 使用NSKeyedUnarchiver解析归档对象       首先自定义类需要实现NSCoding协议,然后实现方法      - (void...)encodeWithCoder:(NSCoder *)aCoder; //定义自定义类哪些属性需要归档,如何归档      - (id)initWithCoder:(NSCoder *)aDecoder

    79830

    项目需求讨论-仿ios底部弹框实现及分析

    hi,项目开发中,有时候需要仿照ios底部弹框做效果,比如我们iPhone上面关闭定位时候,就会弹出ios特有的底部弹框: ?...经过上面二步修改,我们可以看到了效果变成了这样: ? 那接下去如何弹框变成底部呢??????...的确是底部了,但是这时候可能有人会有疑问,我们这个自定义View布局fragment_ios_dialog.xml里面,明明layout_width是match_parent,可是左右二边是间隙,...所以我们先来改变window宽度。...同时这里我们要额外增加监听动画结束事件,因为我们弹框往下移动结束,要让这个弹框dismiss掉: Animation slide = new TranslateAnimation( Animation.RELATIVE_TO_SELF

    1.1K30

    View 上使用挂起函数

    并不是所有的操作都有已取消或出错状态,但是这些操作有。就像后面 Animator 示例中那样,我们必须把这些状态传递到协程中,调用者可以处理错误状态。...等待 View 被布局完成 让我们看一个例子,它封装了一个等待 View 传递下一次布局事件任务 (比如说,我们改变了一个 TextView 中内容,需要等待布局事件完成才能获取该控件新尺寸):...endedSuccessfully = false } override fun onAnimationEnd(animation: Animator) { // 为了协程恢复不发生泄漏...{ val anim1 = async { // ... } val scroll = async { // 我们希望 anim1 完成,延迟...接下来文章中,我们将探讨如何使用协程来组织一个复杂变换动画,其中也包括了一些常见 View 实现,感兴趣读者请继续关注我们更新。

    2.3K30

    【iOS 开发】基本 UI 控件详解 (UIButton | UITextField | UITextView | UISwitch)

    控件; -- UIControl 主要作用 : 定义通用接口, 为活动控件事件机制提供实现, 发生指定动作, 控件会初始化 Action 方法, 回调对应事件处理方法; -- 事件处理方法 :...; -- 高亮 : UI 控件突出显示, 处于高亮状态; 手放在按钮上处于高亮状态; -- 禁用 : UI 控件关闭, 处于禁用状态; 禁用状态控件不可操作, 禁用操作 Interface Builder...; -- Plain 属性值 : 默认即可; -- Attribute 属性值 :  (4) Tittle 属性 Font 属性 : 用于控制文字 字体, 大小, 风格; (5) Text Color...自定义键盘附件 :  -- 作用 : 不是所有的应用都有导航栏, 没有导航栏应用中, 需要有键盘附件来关闭键盘; -- 1....自定义选择菜单 (1) 自定义菜单简介 自定义菜单 :  -- 1.

    6.7K20

    IOS本地化应用

    即将须要翻译字符串替换成其它如果已经是翻译过“译文”,能够用谷歌翻译替换一下或者是将全部元音字母替换成x。...这样做目的是为了尽早发现问题。 (2)冻结UI 应用开发周期中必需要有一个明白时间点来冻结UI。在此之后要坚决杜绝会影响本地化资源变更。nib 文件能够XCode中锁定。...(6b)本地化变更假设你做了一些本地化变更,比方改变了已本地化文本,那么就须要从头開始这个过程。并将这些变更发给本地化人员。能够重用之前字符串翻译,这么做会大大提高效率,但仍然非常麻烦。...就像作者所说那样: 下面是OHAutoNIBi18n.m类。做了一下小改动,改变 frame 情况下。...对 UILabel、UIButton、UITextField 字体大小做了一下自适应。

    88400

    iOS系统中导航栏转场解决方案与最佳实践

    而 UINavigationBar 样式数据就存储 UIViewController UINavigationItem 中。...如果我们创建了一个自定义导航栏组件系统,它调用顺序可能会与此不同。...现在我们问题就来了,如何导航栏转场更加灵活且相互独立呢?...举个例子来说,当从 A 页面 push 到 B 页面的时候,转场库会保存 A 页面的导航栏样式,当 pop 回去就会还原成以前样式,因此我们不用考虑 pop 导航栏样式会改变情况,同时我们也不必考虑...导航栏内置组件布局规范 导航栏里组件布局 iOS 11 发生了改变,原有的一些解决方案已经失效,这些内容不在本篇文章讨论范围之内,推荐阅读UIBarButtonItem iOS 11 上改变及应对方案

    2.4K30

    底牌项目中设置论坛中各个模块头图代码

    w = WIDTH - 30 * IPHONE6_W_SCALE;                 h = w;             }else{  // 能够获取图片大小...                    w = WIDTH - 30 * IPHONE6_W_SCALE;                     h = w;                 }else{  // 能够获取图片大小...// 隐藏             imageView.hidden = YES;         }     } NSLog(@"allH%f", allH); } 简单说几句:之前代码没有先请求头视图中所有图片大小然后传递过去而是设置装图片视图大小时候进行了所有图片大小网络请求...,设置每个具体图片大小进行了网络请求,而且之前图片大小请求方法会造成线程阻塞,从而各个模块图片较多情况下进行网络请求时间较长而且不能与用户进行交互,用户体验并不好。...使用改进之后代码即以上代码,页面在即使图片较多情况下加载速度也很快,用户体验明显好了许多,连本人都满意了许多。

    54030

    教你步步为营掌握自定义 View

    当View所在Activity进入stop状态,View去哪了?如果我一个后台线程中持有一个View引用,我此时能够改变状态吗?为什么? View能够与其他View交叉重叠吗?...为什么看了那么多文章,还是无法愉快地与自定义View玩耍?是那些文章不好吗?非也,是你没有掌握学习自定义View正确姿势(即使你会很多姿势,也木有用,嘎嘎)。...(知己知彼,才好自定义!) 问题三:我要改变这个View行为,外观,肯定是覆写View类中方法,但是怎么覆写,覆写哪些方法能够改变哪些行为?...View完成与用户交互能够自动隐藏,需要交互时候重新显示屏幕上吗? ...... 现在我们就一点点来讲,学习同时,最好能够用心体会Google工程师设计时思路。 这样学习效果最好。...四、我要改变这个View行为,外观,肯定是覆写View类中方法,但是怎么覆写,覆写哪些方法能够改变哪些行为? 好了,View位置和大小怎么确定我们都清楚了,现在,是时候开始自定义View了。

    77060

    Android自定义View使用及其原理知识点总结

    TitleView就是我们看到topbar标题栏。这就是activity加载布局文件过程了。 接下来,我们开始讲自定义控件使用,下面讲解使用时候,会夹带着一些原理分析。...,就可以绘制出一个带矩形框Textview,但是需要在绘制完成调用父类onDraw(),因为是系统控件上拓展,所以,还要有其原来功能。...然后,我们只需要在布局文件中加入自定义控件即可,布局文件中,自定义view名字就是自定义控件类包名加上类名,假设定义CustomTextview类继承TextView,例子如下: <com.example.myapplication.View.CustomTextView...前面说过,ViewGroup是用来管理控件,当ViewGroup大小为”wrap_content”时,它就会遍历其所有子View,来获得子View大小,再来设置自身大小。...Android坐标系中,我们都知道Android屏幕竖屏时候,以左上角位置为原点,向右为x轴正方向,向下为y轴正方向,知道了这个,我们就可以通过调用getX()和getY()方法可以获取触摸点坐标

    40521
    领券