Configuración de la Barra de Navegación en Programas Mini de WeChat

Es posible configurar la barra de navegación tanto en el archivo de configuración global app.json como en los archivos .json de cada página específica.

  • Modificar el título de la barra de navegación: "navigationBarTitleText": "Mi Perfil"
  • Cambiar el color del título: "navigationBarTextStyle": "white"
  • Modificar el color de fondo: "navigationBarBackgroundColor": "#007AFF"
  • No es posible alterar el ícono de retroceso ni el botón de la cápsula (requiere implementación de barra de navegación personalizada)

Configuración Dinámica de la Barra de Navegación

Para modificar dinámicamente las propiedades de la barra de navegación, se utiliza el componente page-meta junto con navigation-bar:

<page-meta>
    <navigation-bar title="{{tituloNavegacion}}" cargando="{{cargandoNavegacion}}" color-frente="{{colorFrenteNavegacion}}" color-fondo="{{colorFondoNavegacion}}" duracion-animacion-color="2000" funcion-tiempo-animacion="easeIn" />
</page-meta>
<view class="contenedor">
    <button bindtap="modificarBarraNavegacion">Actualizar Estilo de Barra</button>
</view>

Page({
  data: {
    tituloNavegacion: "Mi Página",
    cargandoNavegacion: false,
    colorFrenteNavegacion: "#000000",
    colorFondoNavegacion: "#ffffff",
  },

  modificarBarraNavegacion() {
    this.setData({
      tituloNavegacion: "Nuevo Título",
      cargandoNavegacion: true,
      colorFrenteNavegacion: "#ffffff",
      colorFondoNavegacion: "#007AFF",
    });

    setTimeout(() => {
      this.setData({
        cargandoNavegacion: false,
      });
    }, 2000);
  },
});

El componente page-meta sirve para especificar atributos de la página y escuchar eventos de página, debiendo ser siempre el primer nodo dentro de una página. El componente navigation-bar, a su vez, debe ser el primer nodo dentro de page-meta y permite configurar diversas propiedades:

Atributo Tipo Valor por defecto Obligatorio Descripción
title string - No Título de la barra de navegación
cargando boolean false No Indica si se muestra indicador de carga en la barra
color-frente string - No Color de elementos de la barra (botones, título, etc.), solo admite #ffffff y #000000
color-fondo string - No Color de fondo de la barra, en formato hexadecimal
duracion-animacion-color number 0 No Duración en ms de la animación al cambiar colores
funcion-tiempo-animacion string linear No Función de tiempo para la animación de color

Las funciones de tiempo disponibles son:

Función Descripción
linear Animación uniforme, velocidad constante
easeIn Comienza lento, acelera progresivamente
easeOut Comienza rápido, desacelera progresivamente
easeInOut Comienza lento, acelera en medio, termina lento

Barra de Navegación Personalizada

Para crear una barra de navegación completamente personalizada:

  1. En el archivo app.js, obtener las alturas de la barra de estado y la barra de navegación durante el lanzamiento:
App({
  globalData: {
    alturaBarraEstado: 0,
    alturaBarraNavegacion: 0,
  },
  onLaunch() {
    const infoVentana = wx.getWindowInfo();

    this.globalData.alturaBarraEstado = infoVentana.statusBarHeight;
    this.globalData.alturaBarraNavegacion =
      infoVentana.screenHeight -
      infoVentana.windowHeight -
      infoVentana.statusBarHeight;

    console.log("Altura de barra de estado:", this.globalData.alturaBarraEstado);
    console.log("Altura de barra de navegación:", this.globalData.alturaBarraNavegacion);
  },
});

  1. Configurar el uso de barra de navegación personalizada en el archivo .json de la página:
{
    "navigationStyle": "custom"
}

  1. Utilizar los valores de altura calculados en la estructura WXML de la barra personalizada:
<view class="mi-barra-navegacion" style="height: {{alturaBarraNavegacion}}px; margin-top: {{alturaBarraEstado}}px;">
    <view class="titulo-navegacion">Mi Página</view>
</view>

.mi-barra-navegacion {
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: #007AFF;
    color: white;
}

const aplicacion = getApp();

Page({
  data: {
    alturaBarraEstado: aplicacion.globalData.alturaBarraEstado,
    alturaBarraNavegacion: aplicacion.globalData.alturaBarraNavegacion,
  },
});

Etiquetas: Programas Mini WeChat Desarrollo de Mini Programas WeChat Interfaz de Usuario JavaScript

Publicado el 6-6 23:15