Spanish [SOLUCIONADO] B4i IOS Cambiar color texto barra de estado.

SweetCacao

Member
Licensed User
Buenos días.

Tengo una aplicación multiplataforma hecha en B4x Pages.
Me ocurre que en el proyecto de B4i, no encuentro la manera de cambiar el color del texto de la barra de estado, me sale en negro y no se ve un pepino:

1679055427170.png


Gracias y un cordial saludo.
 

SweetCacao

Member
Licensed User
[CÓDIGO=b4x] Dim No como NativeObject = NavControl
No.GetField("navigationBar").RunMethod("setTintColor:", Array(No.ColorToUIColor(Colors.White)))[/CODE]
Gracias, lo probaré ya el lunes.

He probado algo similar, pero creo que no es compatible ya a partir de la versión 13 de IOS, es posible?

Un saludo.
 

SweetCacao

Member
Licensed User
Sube un ejemplo mostrando el problema para verificar y poderte ayudar
Buenas tardes Johan Hormaza.

Pues la cosa es sencilla, como ya comenté anteriormente y visualicé con una imagen, tengo una aplicación hecha en B4x Pages en la cual quiero cambiar el color de los iconos y las letras de la barra de estado (El reloj, estado de la batería, etc...) en la versión de B4i, salen negros por defecto y no se ven bien.

1679502648538.png


Comentar que tengo la barra de navegación desactivada pero es la de estado la que quiero cambiar.
El código que tengo en el siguiente, pero no hace nada. No da error pero tampoco realiza el cambio.

Main:
'Code module
#Region  Project Attributes
    #ApplicationLabel: ChocoLatte
    #Version: 1.0.0

    'Orientation possible values: Portrait, LandscapeLeft, LandscapeRight and PortraitUpsideDown
    #iPhoneOrientations: Portrait
    #iPadOrientations: Portrait
    #Target: iPhone, iPad
    #ATSEnabled: True
    #MinVersion: 8
    #If RELEASE
    #ProvisionFile: ChocoLatteProvision.mobileprovision
    #END IF
#End Region

Sub Process_Globals
    Public App As Application
    Public NavControl As NavigationController
    Type DBResult (Tag As Object, Columns As Map, Rows As List)
    Type DBCommand (Name As String, Parameters() As Object)
End Sub

Private Sub Application_Start (Nav As NavigationController)
    Dim PagesManager As B4XPagesManager
'    Dim nativeobjectInstance                                        As NativeObject
'    Dim nativeObjectAttributes                                      As NativeObject
  
    NavControl = Nav
  
    Dim No As NativeObject = NavControl
    No.GetField("navigationBar").RunMethod("setTintColor:", Array(No.ColorToUIColor(Colors.White)))
  
    NavControl.NavigationBarVisible = False

    PagesManager.Initialize(NavControl)
  
End Sub

'Template version: B4i-1.0
#Region Delegates
Private Sub Application_Background
    B4XPages.Delegate.Activity_Pause
End Sub

Private Sub Application_Foreground
    B4XPages.Delegate.Activity_Resume
End Sub
#End Region

Gracias y un cordial saludo.
 
Last edited:

SweetCacao

Member
Licensed User
Buenas tardes.

Ya está solucionado.

Ocultando la barra de navegación, la barra de estado pasa a coger el color de fondo de la aplicación abierta. Después pones el modo oscuro de la la barra de estado que cambia el color de la fuente a blanco. No se puede poner el color de la fuente que quieras, solo modo oscuro(Blanca) modo claro(Negra). También puedes ocultar la barra de estado con lo que no saldría la hora, estado batería, etc, solo tú aplicación.

Adjunto el código que he utilizado para realizar el cambio:

Main:
Private Sub Application_Start (Nav As NavigationController)
    Dim PagesManager As B4XPagesManager
    Dim nativeobjectInstance As NativeObject
   
    NavControl = Nav
   
    'Oculto la barra de navegación
    NavControl.NavigationBarVisible = False
   
    nativeobjectInstance = NavControl
    'Mantengo visible la barra de estado
    nativeobjectInstance.SetField ("myPrefersStatusBarHidden", False)
    'Pongo el modo oscuro
    nativeobjectInstance.SetField ("myPrefersLightStatusBar",  True) 'True pone la fuente blanca, False la pone negra
   
    PagesManager.Initialize(NavControl)
   
End Sub

De esta manera consigo el efecto que quiero:

1679513937057.png


Gracias y un saludo.
 
Top