当前位置: 首页 > news >正文

小程序学习08—— 系统参数获取和navBar组件样式动态设置

一 系统信息的概念

uni-app提供了异步(uni.getSystemInfo)和同步(uni.getSystemInfoSync)的2个API获取系统信息。

success 返回参数说明:

参数分类说明
statusBarHeight手机状态栏的高度
system操作系统名称及版本
。。。

二 自定义navbar

2.1 获取系统参数

代码展示:

<template><view class="nav"> <!-- 我是子组件 --><view></view>   <!-- 状态栏 --><view class="navbar"></view>  <!-- 内容区域 --></view>
</template><script setup>import { onBeforeMount } from 'vue'onBeforeMount(() => {       //生命周期-页面渲染(加载)之前setNavSize()})//系统计算状态栏高度--单一逻辑封装成方法/单一功能封装成组件const setNavSize = () => {const res = uni.getSystemInfoSync()console.log(res)}</script><style>.nav {position: fixed;width: 100%;top: 0;left: 0;z-index: 2; }
</style>

返回结果:

2.2 尺寸单位

uni-app 支持的通用 css 单位包括 px、rpx

  • px 即屏幕像素

  • rpx 即响应式 px,一种根据屏幕宽度自适应的动态单位。以 750 宽的屏幕为基准,750rpx 恰好为屏幕宽度。一般默认将按照 375px 的屏幕宽度进行计算。

2.3 完整代码

<template><view class="nav"> <!-- 我是子组件 --><view :style="'height:' + status + 'rpx;' + containerStyle"></view>   <!-- 状态栏 动态样式v-bind style --><view class="navbar" :style="'height:' + navHeight + 'rpx;' + containerStyle"></view>  <!-- 内容区域 --></view>
</template><script setup>import { ref, onBeforeMount, defineProps } from 'vue'const props = defineProps({background: {type: String,default: 'rgba(120, 60, 30, 1)'},color: {type: String,default: 'rgba(111, 111, 111, 1)'},fontSize: {type: String,default: 32},iconWidth: {type: String,default: 116},iconHeight: {type: String,default: 38},})onBeforeMount(() => {       //生命周期-页面渲染(加载)之前setNavSize()setStyle()})//利用ref,创建响应式变量//状态栏高度(默认值为0)const status = ref(0)//内容高度const navHeight = ref(0)//背景颜色const containerStyle = ref('')//字体样式const textStyle = ref('')//图标样式const iconStyle = ref('')//系统计算状态栏高度--单一逻辑封装成方法/单一功能封装成组件//创建方法const setNavSize = () => {const { system, statusBarHeight } = uni.getSystemInfoSync()status.value = statusBarHeight * 2   //系统给到的数值以px为单位,转换为rpx需*2const isiOS = system.indexOf('iOS')   //判断是否iOS系统if (!isiOS) {navHeight.value = 96} else {navHeight.value = 88  //如果iOS,考虑顶部刘海}//console.log(res)}//样式设置(使用数组方式写出->数组转字符串->.join进行拼接)const setStyle = () => {containerStyle.value = ['background:' + props.background].join(';')textStyle.value = ['color:' + props.color, 'font-size:' + props.fontSize + 'rpx'].join(';')iconStyle.value = ['width:' + props.iconWidth + 'rpx', 'height:' + props.iconHeight + 'rpx'].join(';')}</script><style>.nav {position: fixed;   //固定定位(注释需删除,以防报错)width: 100%;top: 0;left: 0;z-index: 2;     //层级(避免遮挡)}
</style>

运行结果:

三 报错

在使用XHbuilder X运行微信小程序的时候可能会遇到一个问题:请注意游客模式下,调用 wx.operateWXData 是受限的, API 的返回是工具的模拟返回,这是因为我们忘记在程序中配置AppID了才会出现这样的警告。

解决

(a) 打开微信小程序助手

在左边的侧边栏选择开发-->开发管理-->开发设置选中AppID(小程序ID) 注意这里要是正式的AppID不要使用测试号的

(b)粘贴

选中复制后打开XHbuilder X将AppID黏贴进去就可以了

http://www.lryc.cn/news/517675.html

相关文章:

  • 数据库环境安装(day1)
  • 网络安全-web渗透环境搭建-BWAPP(基础篇)
  • 当算法遇到线性代数(三):实对称矩阵
  • WayLand的架构和协议
  • STM32学习(十)
  • 进阶篇-Day17:JAVA的日志、枚举、类加载器、反射等介绍】
  • Java设计模式 —— 【行为型模式】责任链模式(Chain-of-responsibility Pattern) 详解
  • C++和Python中负数取余结果的区别
  • rust学习——环境搭建
  • Linux系统中解决端口占用问题
  • 现代软件架构设计:14个质量属性的定义、权衡与最佳实践
  • 【UE5 C++课程系列笔记】25——多线程基础——FGraphEventRef的简单使用
  • 计算机网络之---信号与编码
  • linux下用命令行给串口写数据和读数据
  • 【生物信息】如何使用 h5py 读取 HDF5 格式文件中的数据并将其转换为 NumPy 数组
  • 纯手工(不基于maven的pom.xml、Web容器)连接MySQL数据库的详细过程(Java Web学习笔记)
  • thingsboard通过mqtt设备连接及数据交互---记录一次问题--1883端口没开,到服务器控制面板中打开安全组1883端口
  • 联邦学习中的LoRA:FedLoRA
  • PyTorch reshape函数介绍
  • Linux内核 -- 邮箱子系统之`mbox_controller` 的 `txdone_irq` 用法
  • Linux/Ubuntu/银河麒麟 arm64 飞腾FT2000 下使用 arm64版本 linuxdeployqt 打包Qt程序
  • Excel | 空格分隔的行怎么导入excel?
  • 如何将某两个提交去掉父提交的合并
  • Windows下安装最新版的OpenSSL,并解决OpenSSL不是当前版本的问题,或者安装不正确的问题
  • Django 社团管理系统的设计与实现
  • android compose 串口通信
  • Cursor无限续杯——解决Too many free trials.
  • 网络传输层TCP协议
  • 我的前端面试笔记(React篇)
  • Qt 5.14.2 学习记录 —— 팔 QWidget 常用控件(3)