iOS下简单实现滑动导航条

iOS下简单实现滑动导航条,第1张

最近在做一款ios的app,其中有一个页面需要分成三个版块,版块之间可以通过左右滑动来进行切换,也可以通过点击上方的按钮来切换,好像在android中可以用过ViewPager + Fragment来实现。界面大概就是这个样子,这里我以知乎客户端的发现页面为例:

其中整个页面分为三个小的版块,分别"推荐","热门"以及"收藏"。点击上方的文字后,下方的页面会切换到对应的版块,同时文字下方的蓝色导航条也会随着界面的切换跟着滑动。另外,当我们不通过按钮切换,用手势在页面上左右滑动时,导航条也会跟着一起滑动。功能大概就是这个样子。

下面简单分析下实现原理。首先在"发现"的下方应该有UIView,在UIView中放有3个UIButton。至于文字下方的导航条,可以用UILabel来做,宽度等于一个按钮的宽度,并将背景色改为蓝色。导航条下方的页面可以通过手势来左右滑动,首先想到的应该就是,这是一个UIScrollView,我们需要将scrollView的contentSize属性设置成三个页面宽度的大小,否则会无法滑动页面。然后在scrollView放上三个版块的页面,这个根据自身的业务情况而定,一般UITableView用得比较多。最后,怎样才能让页面滑动的时候导航条也跟着移动的?在Android中,一般的做法就是给scrollView中添加一个事件监听器,用来监听滑动事件,并在事件处理函数中执行响应的逻辑。在ios中没有事件监听这个概念,我们可以为scrollView设置它的代理,并在代理类中覆盖掉该方法:

设置了代理类后,代理类其实就是帮我们注册了相应的回调函数,每次scrollView只要有细微的滑动,该方法就会被调用。在方法中,需要做的就是获取scrollView当前的偏移量,然后根据这个偏移量来设定导航条的位置。

将scrollView与滚动条声明未全局变量,因为在其他方法中也会用到。

scrollView延迟初始化,在初始化时记得为其设置代理对象。

navLabel延迟初始化

将三个按钮添加到页面中,并为按钮添加点击事件处理函数。

将创建按钮的过程单独抽象出来

按钮点击后调用的函数,即切换页面

最后,在回调函数中根据scrollView的偏移量调整导航条的位置。

这是最终的效果图:

先上图

使用HorizontalScrollView可以让超出屏幕的导航栏可以滑动,每个RadioButton代表一个导航标题,android:button="@null"去掉RadioButton的选中圆圈

选中的下划线xml文件

将RadioButton导航栏的标题装在一个list集合里面,新增标题的时候可以直接在list里添加RadioButton的id,简约了ViewPage滑动定位到相应的RadioButton和相应的Fragment,不用when每个id去判断。

增加标题时也要add对应的Fragment

继承FragmentStatePagerAdapter 。当ViewPager中的Fragment数量相对较多时继承FragmentStatePagerAdapter,少时可以继承FragmentPagerAdapter

二级侧边导航连续滑动设置微信小程序方法如下:
1、打开样式布局(wxml文件),更改js文件和数据文件(sidejs)。
2、页面显示出来了,也可以将side文件写入data里面,或是将文件写入外部,进行模块的导入,两种方法都可以。

Axure RP6 的实现方法:
1把导航转成动态面板A,复制一份作为B,把B隐藏起来置顶;
2把B下面的内容转成动态面板C;
3做了一个5050的动态面板,给它设置每个50毫秒隐藏每50毫秒显示的,这样不断循环,循环的同时不断判断:B是否覆盖C,如果是,则隐藏A,显示B;如果不是,则不做任何改变。

打开淘宝无线端装修——选择模块:①如果你想做导航类左右滑动的,选择“多图模块”尺寸是248146,一共可添加6个;②如果你想做小海报形式的,选择“轮播图模块”尺寸是608304,一共可添加4个。这两个模块都是添加在左右滑动显示的。不同点是:大小   。相同点是:这个模块只能使用两组。如果达到上限,系统会提示:该组件已超过使用上限。意思就是只能用两组。

如何添加链接:如图所示  “链接”点进去之后——要根据你宝贝的连接来选,如果是分类导航,你得选择——宝贝分类(如:我要添加一个名为“10月上新”的分类,选择——宝贝分类里的“10月上新”点√就行了。前提是你的分类已经做了,有你要的分类选项)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13391490.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-27
下一篇 2023-07-27

发表评论

登录后才能评论

评论列表(0条)

保存