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

在UINavigationBar上滑动画过程中,具有自定义宽度的UISearchBar消失

在UINavigationBar上滑动动画过程中,具有自定义宽度的UISearchBar消失,可以通过以下步骤实现:

  1. 首先,确保你已经将UISearchBar添加到了UINavigationBar上,并设置了自定义的宽度。
  2. 监听UINavigationBar的滑动事件,可以通过实现UINavigationBarDelegate的方法来实现。其中最常用的方法是navigationBar(_:didPop:),它会在滑动返回过程中被调用。
  3. navigationBar(_:didPop:)方法中,你可以获取到当前的导航栏状态,并根据需要进行处理。在这个场景下,你可以检查导航栏的alpha值来判断是否需要隐藏UISearchBar。
  4. 如果需要隐藏UISearchBar,你可以使用UIView的动画方法来实现平滑的过渡效果。例如,你可以使用UIView.animate(withDuration:animations:)方法来改变UISearchBar的frame属性,使其消失在导航栏中。

以下是一个示例代码:

代码语言:swift
复制
class ViewController: UIViewController, UINavigationBarDelegate {
    // 在这里添加你的UISearchBar和UINavigationBar
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 设置UINavigationBar的delegate
        navigationController?.navigationBar.delegate = self
    }
    
    func navigationBar(_ navigationBar: UINavigationBar, didPop item: UINavigationItem) {
        // 获取导航栏的alpha值
        let alpha = navigationBar.alpha
        
        // 如果导航栏的alpha值小于等于0.5,表示正在滑动返回
        if alpha <= 0.5 {
            // 使用动画隐藏UISearchBar
            UIView.animate(withDuration: 0.3) {
                // 设置UISearchBar的frame属性,使其消失在导航栏中
                self.searchBar.frame = CGRect(x: 0, y: -self.searchBar.frame.height, width: self.searchBar.frame.width, height: self.searchBar.frame.height)
            }
        }
    }
}

这样,当你在UINavigationBar上滑动返回时,具有自定义宽度的UISearchBar将会平滑地消失在导航栏中。请注意,这只是一个示例代码,你需要根据你的实际情况进行适当的调整。

推荐的腾讯云相关产品:腾讯云移动应用分析(MTA),产品介绍链接地址:https://cloud.tencent.com/product/mta

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

相关·内容

iOS开发知识点

设置navBar的背景,去掉黑线,试了好长时间,查了好多,这个对我适用 设置navBar上item的颜色,以及nav Title的颜色和字体大小 替换系统返回按钮的图片,设计说自带的太丑,一开始是自定义返回的...:[[UIImage alloc] init]]; [[UINavigationBar appearance] setTranslucent:NO]; // 设置navBar的按钮的tintColor...-60) forBarMetrics:UIBarMetricsDefault]; 自定义返回按钮后,系统的侧滑返回会失效,之前我一直每个界面都设置,打开关闭,后来发现直接可以设置所有的 self.navigationController.interactivePopGestureRecognizer.delegate...= self; // 侧滑返回,自定义返回按钮后生效,在最顶部设置可以在Push出来的界面都有效 #pragma mark - gestureRecognizer delegate - // 侧滑返回...cancel,英文的,但是产品强迫要中文的,所以就只能改啊 // searchBar开始编辑时改变取消按钮的文字 - (void)searchBarTextDidBeginEditing:(UISearchBar

17650
  • iOS学习—— UINavigationController的返回按钮与侧滑返回手势的研究

    一 侧滑返回      侧滑返回是系统iOS7自带的一种方便用户进行返回操作而推出的一种新功能。在开发过程中,对侧滑返回进行控制非常简单,主要就是启动侧滑手势和禁用侧滑手势。...而在这个模块上,我们有某个或某些viewController需要禁用侧滑手势(一般需要禁用侧滑手势是因为返回或退出当前viewController时需要double confirm,在一些填表的页面比较常见...因为侧滑返回手势事实上是由存在已久的UIPanGestureRecognizer来识别并响应的,它直接与UINavigationController的view进行绑定,因此在包含UIScrollView...的自定义则会禁用侧滑返回手势。...backIndicatorImage,而leftBarButtonItem的自定义则会使最左边的返回箭头消失backIndicatorImage。

    6.9K60

    Flutter 知识集锦 | 基于 Flow 实现滑动显隐层

    当放手时,根据偏移量是否达到宽度的一半,使用动画进行移出或者关闭。 偏移的实现方式有很多,但需要自由地进行布局和矩阵变换、透明度,并且需要支持动画的变化,Flow 组件是一个非常不错的选择。...---- 另外,在滑动过程中需要注意限制偏移量,使偏移量在 0~size.width 之内;当放手时,通过动画控制器来驱动动画,使用补间让偏移量运动到 0 (打开) 或 size.width(关闭) 。...动画的使用 动画的使用,主要是通过 AnimationController 动画控制器来驱动数值的变化;在放手时 Tween 创建补间动画器,监听动画器数值的变化更新偏移量。...这样,基于 Flow 实现的自定义布局,就可以根据手势和动画,完成特定的交互功能。从这里可以看出 Flow 自定义布局的灵活性非常强,很多疑难杂症,都可以使用它来完成。...比如企业微信中:侧滑展示左栏,而且上层不会全部消失,通过 Flow 来自定义布局就很容易实现。大家可以基于本文,自己实现一下作为练习。那本文就到这里,谢谢观看 ~ 标题 关闭

    71021

    你可能需要为你的 APP 适配 iOS11

    前言 前几天发现在做的APP在iOS11系统上动画有异常,在其他系统的设备上都是正常的,动画的操作是观察tableView的contentOffset变化后执行的,异常动画发生在tableView reloadData...如果有人看不清楚tab bar上的图标或文字,可以通过长按tab bar上的任意item,会将该item显示在HUD上,这样可以清楚的看清icon和text。...要避免视图尺寸为0,可以从以下方面做: ● UINavigationBar 和 UIToolbar 提供位置 ● 开发者则必须提供视图的size,有三种方式: ① 对宽度和高度的约束; ② 实现 intrinsicContentSize...在测试Demo中,创建tableView到显示出来的过程中,contentSize的计算过程如下图: Self-Sizing在iOS11下是默认开启的,Headers, footers, and cells...值的变化,如果是有动画是观察这两个属性的变化进行的,就会造成动画的异常,因为在估算行高机制下,contentSize的值是一点点地变化更新的,所有cell显示完后才是最终的contentSize值。

    2.5K00

    # iOS导航栏控制Tips

    // 不显示动画,导航栏显示就比较突兀 [self.navigationController setNavigationBarHidden:YES]; // 显示动画,在侧滑时,导航栏显示就比较顺滑...setNavigationBarHidden:NO animated:YES]; } B页面: // 在页面将要出现时,记录原始侧滑手势代理对象,并将手势代理设置为当前页面 - (void)viewWillAppear...self.navigationController.interactivePopGestureRecognizer.delegate = self; [self.navigationController setNavigationBarHidden:YES animated:YES]; } // 在页面消失时...注意: 如果重写了导航栏的leftBarButtonItem,那么侧滑返回功能也就失效了,需要侧滑返回功能需要自己处理。...在原始堆栈数组中判断是否存在该类型的控制器,如果存在记录其索引。 在复制的数组中将索引及上方所有控制器移除。 把将要push出来的控制器添加到复制的数组中。

    1.7K31

    iOS开发UINavigation系列四——导航控制器UINavigationController

    导航控制器是一个堆栈结构,只是其中管理的对象是controller,通过push与pop进行controller的切换,我们有两种方式可以创建导航控制器: //通过一个自定义的导航栏和工具栏创建导航控制器...//iOS7之后,在导航中右划会进行pop操作,设置这个的enable可以控制设置手势是否失效 @property(nullable, nonatomic, readonly) UIGestureRecognizer... *interactivePopGestureRecognizer; 四、iOS8后导航的新特性 //这个方法是为了iOS方法的命名统一,在导航中,其作用和push一样 - (void)showViewController...) BOOL hidesBarsWhenKeyboardAppears; //屏幕滑动的时候隐藏导航栏,常用于tableView,上滑隐藏导航栏,下滑显示,带动画效果 @property (nonatomic...navigationControllerPreferredInterfaceOrientationForPresentation:(UINavigationController *)navigationController NS_AVAILABLE_IOS(7_0); //下面两个方法可以对导航的转场动画进行设置

    1.8K20

    你可能需要为你的APP适配iOS11

    前言 前几天发现在做的APP在iOS11系统上动画有异常,在其他系统的设备上都是正常的,动画的操作是观察tableView的contentOffset变化后执行的,异常动画发生在tableView reloadData...如果有人看不清楚tab bar上的图标或文字,可以通过长按tab bar上的任意item,会将该item显示在HUD上,这样可以清楚的看清icon和text。...要避免视图尺寸为0,可以从以下方面做: ● UINavigationBar 和 UIToolbar 提供位置 ● 开发者则必须提供视图的size,有三种方式:  ① 对宽度和高度的约束; ② 实现 intrinsicContentSize...在测试Demo中,创建tableView到显示出来的过程中,contentSize的计算过程如下图: Self-Sizing在iOS11下是默认开启的,Headers, footers, and cells...值的变化,如果是有动画是观察这两个属性的变化进行的,就会造成动画的异常,因为在估算行高机制下,contentSize的值是一点点地变化更新的,所有cell显示完后才是最终的contentSize值。

    82920

    qq侧滑

    上一篇博客带大家实现了:Android 自定义控件打造史上最简单的侧滑菜单 ,有兄弟看了以后说,你这滑动菜单过时了呀~QQ5.0的效果还不错~~嗯,的确,上一篇也承诺过,稍微修改上一篇的代码,实现QQ5.0...我们在菜单出现的整个过程中,不断记录菜单显示的宽度与其总宽度的比值,是个从0到1的过程,然后把0~1转化为1~0.7(假设内容区域缩小至0.7);不断去缩小内容区域; 对于区别3:也比较好办,上面已经可以得到...其实也比较简单,在菜单出现的过程中,不断设置菜单的x方向的偏移量;0的时候完全隐藏,0.3的时候,隐藏x方向偏移量为0.7个宽度,类推~~~ 好了,分析完毕,那么对于这些动画用什么实现最好呢?...;   与菜单的宽度做除法运算,在菜单隐藏到显示整个过程,会得到1.0~0.0这么个变化的区间; 有了这个区间,就可以根据这个区间设置动画了; 1、首先是内容区域的缩放比例计算: 我们准备让在菜单出现的过程中...菜单栏需要ListView的拖动也是不会冲突了,上篇已经测试了; 关于动画属性的范围:上面介绍的特别清楚,比如内容我们是最小显示0.8,你要是喜欢0.6,自己去修改一下;包括偏移量,透明度等范围; 因为上一篇已经写了如何把属性抽取成自定义的属性

    2.1K60

    你可能需要为你的 APP 适配 iOS 11

    本文介绍iOS11中在UI方面做了哪些更新,有些更新可以为用户提供更加完美的体验,但也有的可能会给目前的APP带来异常bug 前言 前几天发现在做的APP在 iOS11 系统上动画有异常,在其他系统的设备上都是正常的...(command+向左的箭头让模拟器横屏) 横屏时,在iPhone上,tab上的图标较小,tab bar较小,这样垂直空间可多放置内容。...如果有人看不清楚tab bar上的图标或文字,可以通过长按tab bar上的任意item,会将该item显示在HUD上,这样可以清楚的看清icon和text。...要避免视图尺寸为0,可以从以下方面做: UINavigationBar 和 UIToolbar 提供位置 开发者则必须提供视图的size,有三种方式: 对宽度和高度的约束; 实现 intrinsicContentSize...在测试Demo中,创建tableView到显示出来的过程中,contentSize的计算过程如下图: ?

    1.7K60

    UINavigationController 导航控制器概念属性方法

    controller,通过push与pop进行controller的切换,UINavigationController是将这些控件(UINavigationBar,UINavigationItem和UIToolBar...(iOS7之后,在导航中右划会进行pop操作,设置这个的enable可以控制设置手势是否失效) @property(nullable, nonatomic, readonly) UIGestureRecognizer...*barHideOnSwipeGestureRecognizer; 10、屏幕滑动的时候是否隐藏导航栏,常用于tableView,上滑隐藏导航栏,下滑显示,带动画效果 @property (nonatomic...,strong) UINavigationController *navigationController; ---- 方法 1、创建导航控制器的两种方法 (1)通过一个自定义的导航栏和工具栏创建导航控制器...navigationControllerPreferredInterfaceOrientationForPresentation:(UINavigationController *)navigationController; (5)下面两个方法可以设置导航的转场动画

    2.2K60

    ViewController及View的生命周期1. 起因2. Controller的生命周期3. View的生命周期4. 内存警告

    这个阶段会加载一些高开销的操作,例如:键盘弹出、特殊的过程动画(比方说修改状态栏、导航条颜色等等)这些。...为了能够进一步搞清楚之间的区别,我们在不同屏幕上运营一下这两个方法看看调度的时间点。我们将Xcode默认使用5S去设置一下,屏幕大小是320*568,但是如果运行在6s上会怎么样。...下面做一个小测试,打印在不同方法执行的过程中,界面的长宽属性如何,结果如下: //viewDidLoad w:320.000000 h:568.000000 //viewWillAppear w:...在自定义cell的时候也有这种问题,如果在init中添加控件的话,那么self.frame.size.width也不一定是准确的宽度,一般解决方法是使用[UIScreen mainScreen].bounds.size.width...而这种侧滑返回会出现什么问题呢?当触发侧滑返回时会调用系统自带的viewWillDisappear:方法。

    1.5K30

    HarmonyOS 开发实践——基于tabs实现页面布局

    场景描述在页面布局过程中,Tabs可以将产品包含的所有内容进行清晰分类,一目了然地呈现应用的内容范围,方便概览与跳转场景一:tab嵌套list的吸顶效果场景二:tabbar样式自定义:1、tabs切换、...实现tabs以下功能点:1.下划线跟手动画:通过swiper的onGestureSwipe在页面跟手滑动过程中的回调,返回index以及extraInfo动画相关信息来判断当前index、页签距离左边margin...,以及当前页签的宽度信息等,再利用动画开始以及动画结束回调结合animateTo实现下划线的动效。...,实现跟手过程中是左滑还是右滑,计算当前以及下一个目标页面的索引值,当前距离左边的距离,以及当前tabbar的宽度2、通过用componentUtils.getRectangleById,获取指定id的组件大小...、位置、平移缩放旋转及仿射矩阵属性信息,得到当前距离左边的距离以及对应tabbar的宽度,用onAnimationStart在切换动画开始触发的时候,下划线跟踪页面一起滑动,同时宽度渐变,3、当滑动结束时通过

    20020

    Android滑动菜单框架完全解析,教你如何一分钟实现滑动菜单特效

    如果忘记了其中的实现原理或者还没看过的朋友,请先去看一遍之前的文章 Android滑动菜单特效实现,仿人人客户端侧滑效果,史上最简单的侧滑实现 ,因为我们今天要实现的滑动菜单框架也是基于同样的原理的。...没错,基本上这些代码和之前那篇文章的代码大同小异,只不过以前这些代码是写在Activity里的,而现在我们移动到了自定义的View当中。 接着我来说明一下和以前不同的部分。...因此在这里我们也可以看出,使用SlidingLayout这个布局的前提条件,必须为这个布局提供两个子元素,第一个元素会作为左边布局偏移出屏幕,第二个元素会作为右边布局显示在屏幕上。...在Acitivty的layout中引入我们自定义的布局,并且给这个布局要加入两个直接子元素。 2. 在Activity中通过setScrollEvent方法,给一个View注册touch事件。...3.正在滑动时屏蔽掉内容布局上的事件。 4.当菜单布局展示时,点击一下右侧的内容布局,可以将菜单隐藏。 5.修复刚打开程序时,菜单可能会短暂显示一下,然后瞬间消失的bug。

    2.3K60

    太有意思了,教你实现实现王者荣耀团战!

    好像还是有点不对,箭在空中的时候就消失了,我们要的效果是射到亚瑟才消失。...deltaRelative,相对于视图在整个运动序列过程中移动的距离,(0,0)为视图起始位置,(1,1)为结束位置。...官网有一个类似youtube中运动动画的案例,我这边搬过来简单说下。先看看效果 ? 效果不错吧,特别是手势滑动的那个丝滑感,太爽了,以前做这种动画效果少说也要半个小时吧,想想就头疼。...这里为0就代表宽度到该位置还是和初始宽度一致。 motion:motionInterpolator,表示动画的插值器。这里的linear就是线性运动,还可以设置bounce弹簧运动等等。...TransitionManager可以提供不同场景之间的过渡转换动画,需要设定两个场景(布局文件),然后两个场景中对应的控件id要对应上。最后通过java代码执行过渡动画。

    1.2K10
    领券