一、uniapp tabbar高度
1.1、uniapp底部tabbar
uniapp是一款跨平台开发框架,它可以快速地实现多个平台上的应用程序开发。在uniapp开发中,底部的tabbar是一种常见的视图控件,它可以帮助用户轻松地访问应用程序的不同功能模块。但是,要实现一个合适的tabbar,就需要获取底部tabbar的高度。
1.2、uniapp获取tabbar高度
获取tabbar高度是一个非常基础而又重要的问题。在uniapp中,我们可以使用uni.getSystemInfo()方法来获取设备信息,其中包括底部菜单栏(tabbar)的高度。uni.getSystemInfo()方法返回一个JSON对象,包含了设备的各种信息。
uni.getSystemInfo({ success: function (res) { console.log(res.statusBarHeight) console.log(res.screenHeight) console.log(res.windowHeight) console.log(res.windowWidth) console.log(res.pixelRatio) console.log(res.language) console.log(res.version) console.log(res.system) console.log(res.platform) console.log(res.fontSizeSetting) console.log(res.appId) console.log(res.deviceId) console.log(res.brand) console.log(res.model) console.log(res.sdkVersion) console.log(res.appName) console.log(res.appVersion) console.log(res.packageName) console.log(res.theme) console.log(res.tabBar) //输出tabbar的信息 } });
上述代码中,我们可以看到res.tabBar这个属性,它是一个对象,其中包含了tabbar的属性,包括高度、背景颜色、位置等信息。我们可以直接通过res.tabBar.height来获取底部tabbar的高度。
uni.getSystemInfo({ success: function (res) { var tabBarHeight = res.tabBar.height console.log(tabBarHeight) } });
二、uniapp获取底部tabbar高度的注意事项
2.1、多平台适配
由于uniapp是一个跨平台开发框架,可以快速地实现多个平台上的应用程序开发。在不同的平台上,tabbar的高度可能是不同的。因此,在使用uni.getSystemInfo()方法获取tabbar高度时,应该对不同平台进行适配。以下是一些常见的平台的底部tabbar高度:
- 苹果iOS 14系统的底部tabbar高度是83px
- 苹果iOS 13系统及以下的底部tabbar高度是49px
- 安卓系统的底部tabbar高度是50px
- 微信小程序的底部tabbar高度是56px
因此,我们需要对这些平台进行特定的适配,才能获取正确的tabbar高度。
2.2、tabbar样式修改
有时候,我们需要对tabbar的样式进行修改,比如修改底部tabbar的高度、字体颜色等。如果使用uni.getSystemInfo()方法获取的tabbar高度,可能会因为我们修改样式的原因而失效。这个时候,我们可以手动设置tabbar的高度,再通过不同平台的适配来实现正确的tabbar高度。
// 取消默认选中状态 "tabBar": { "selectedColor": "#007AFF", "color": "#929292", "borderStyle": "white", "backgroundColor": "#ffffff", "position": "bottom", "list": [ { "pagePath": "/pages/index/index", "text": "首页", "iconPath": "static/tabbar/icon_home.png", "selectedIconPath": "static/tabbar/icon_home_selected.png" }, { "pagePath": "/pages/mine/mine", "text": "我的", "iconPath": "static/tabbar/icon_mine.png", "selectedIconPath": "static/tabbar/icon_mine_selected.png" } ] }, // tabbar的高度单独定义,方便修改 "tabbar_height": 60
通过如上代码,我们可以在uniapp项目中定义一个tabbar高度的变量,然后通过CSS样式来修改tabbar的高度。
/* 在app.vue中定义底部tabbar的样式 */ .tab-bar { position: fixed; bottom: 0; height: var(--tabbar_height); /* 引用tabbar高度的变量 */ width: 100%; border-top: 1px solid #dcdcdc; background-color: #f9f9f9; z-index: 9999; }
三、uniapp tabBar 图标选取
3.1、使用字体图标
在uniapp中,我们一般使用uni-icons来为tabbar添加图标。uni-icons是uniapp自带的字体图标库,它可以让我们更加方便地添加图标,同时也能够提高应用的性能。
// 引入uni-icons字体图标库 <unicomponents> <uni-icons/> </unicomponents> // 在tabBar的list中设置图标属性 "tabBar": { "color": "#7A7E83", "borderStyle": "black", "selectedColor": "#000000", "backgroundColor": "#ffffff", "list": [ { "pagePath": "/pages/index/index", "iconPath": "/static/tabbars/home.png", "selectedIconPath": "/static/tabbars/homeSelected.png", "text": "首页" }, { "pagePath": "/pages/mine/mine", "iconPath": "/static/tabbars/user.png", "selectedIconPath": "/static/tabbars/userSelected.png", "text": "我的" } ] }
在list中,我们可以通过iconPath和selectedIconPath属性来设置tabbar的图标,而使用uni-icons的话,还可以通过icon属性设置tabbar的图标。
// 使用uni-icons字体图标库实现tabbar图标 "tabBar": { "color": "#7A7E83", "borderStyle": "black", "selectedColor": "#000000", "backgroundColor": "#ffffff", "list": [ { "pagePath": "/pages/index/index", "icon": "uni-home", "text": "首页" }, { "pagePath": "/pages/mine/mine", "icon": "uni-person", "text": "我的" } ] }
3.2、使用图片图标
除了使用字体图标外,在uniapp中我们还可以使用图片图标来实现tabbar的图标。使用图片图标时,我们需要注意图标的大小和文件格式等问题。
// 在tabBar中设置图片路径 "tabBar": { "color": "#7A7E83", "selectedColor": "#000000", "backgroundColor": "#ffffff", "borderStyle": "black", "list": [ { "pagePath": "/pages/index/index", "iconPath": "/static/tabbars/home.png", "selectedIconPath": "/static/tabbars/homeSelected.png", "text": "首页" }, { "pagePath": "/pages/mine/mine", "iconPath": "/static/tabbars/user.png", "selectedIconPath": "/static/tabbars/userSelected.png", "text": "我的" } ] }
3.3、tabBar 图标规范
在设计tabBar图标时,应该遵循互联网设计领域的一些规范。这些规范可以帮助我们制作出更容易理解的图标,提高应用程序的易用性。以下是几点常见的设计规范:
- 图标颜色不宜过多,最好不要超过3种颜色
- 图标应该在视觉上和其代表的页面内容信息有清晰的连系
- 图标的形状应该是简单的,容易识别的
- 各个图标之间的大小,线宽应该保持一致,以免视觉上出现问题