当前位置:   article > 正文

动态设置小程序IOS底部小黑条

动态设置小程序IOS底部小黑条

创建setIOSAreaMixin.js文件

  1. import {
  2. mapState,
  3. mapMutations
  4. } from 'vuex'
  5. export default {
  6. computed: {
  7. ...mapState("ios_area", ["globalAreaClass", 'isSafeAreaCalculated'])
  8. },
  9. mounted() {
  10. if (!this.isSafeAreaCalculated) {
  11. this.calculateSafeAreaClass();
  12. this.setSafeAreaCalculated(true)
  13. }
  14. },
  15. methods: {
  16. ...mapMutations("ios_area", ["setSafeAreaCalculated", 'setGlobalClass']),
  17. calculateSafeAreaClass() {
  18. // 获取设备信息
  19. let result = uni.getSystemInfoSync().osName
  20. // 判断设备类型
  21. if (result == 'ios' ) {
  22. // 计算安全区域类名
  23. const safeAreaClass = 'setIosArea'; // 根据你的需求定义类名
  24. // 更新 Vuex 中的数据
  25. this.setGlobalClass(safeAreaClass)
  26. } else {
  27. // 非iOS设备时清空类名
  28. this.setGlobalClass('')
  29. }
  30. },
  31. },
  32. };import {
  33. mapState,
  34. mapMutations
  35. } from 'vuex'
  36. export default {
  37. computed: {
  38. ...mapState("ios_area", ["globalAreaClass", 'isSafeAreaCalculated'])
  39. },
  40. mounted() {
  41. if (!this.isSafeAreaCalculated) {
  42. this.calculateSafeAreaClass();
  43. this.setSafeAreaCalculated(true)
  44. }
  45. },
  46. methods: {
  47. ...mapMutations("ios_area", ["setSafeAreaCalculated", 'setGlobalClass']),
  48. calculateSafeAreaClass() {
  49. // 获取设备信息
  50. let result = uni.getSystemInfoSync().osName
  51. // 判断设备类型
  52. if (result == 'ios' ) {
  53. // 计算安全区域类名
  54. const safeAreaClass = 'setIosArea'; // 根据你的需求定义类名
  55. // 更新 Vuex 中的数据
  56. this.setGlobalClass(safeAreaClass)
  57. } else {
  58. // 非iOS设备时清空类名
  59. this.setGlobalClass('')
  60. }
  61. },
  62. },
  63. };

Vuex中存储

  1. export default {
  2. namespaced: true,
  3. state: {
  4. isSafeAreaCalculated: false,
  5. globalAreaClass: '',
  6. },
  7. mutations: {
  8. setSafeAreaCalculated(state, value) {
  9. state.isSafeAreaCalculated = value;
  10. },
  11. setGlobalClass(state, value) {
  12. state.globalAreaClass = value;
  13. },
  14. },
  15. }

main.js中全局混入

  1. import setIOSAreaMixin from './mixin/setIOSAreaMixin'
  2. Vue.mixin(setIOSAreaMixin);

 页面中使用

  1. <view class="footer" :class="globalAreaClass">
  2. <u-button type="warning" :custom-style="customStyle" hover-class="none" @click="chongZhi">确认充值</u-button>
  3. </view>

css

  1. .setIosArea {
  2. padding-bottom: calc(constant(safe-area-inset-bottom)/(1.5)) !important;
  3. padding-bottom: calc(env(safe-area-inset-bottom)/(1.5)) !important;
  4. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/45484
推荐阅读
相关标签
  

闽ICP备14008679号