iOS Question Problem with TabControl and IphoneX safe area

marcick

Well-Known Member
Licensed User
Longtime User
I'm playing with a ThreePages example that use TabControl. Sorry I can't find the original post so here is the code

Main module:
ub Process_Globals   

    Public App                        As Application
    Public NavControl                 As NavigationController
    Public TabControl                 As TabBarController   

End Sub

Private Sub Application_Start (Nav As NavigationController)
    
    Dim nativeobjectInstance                                         As NativeObject
    
    NavControl = Nav
    TabControl.Initialize ("TabControl")
    
    nativeobjectInstance = TabControl
    nativeobjectInstance =  nativeobjectInstance.GetField ("tabBar")
    nativeobjectInstance.SetField ("tintColor",               nativeobjectInstance.ColorToUIColor (0xFFFFFF00))
    nativeobjectInstance.SetField ("unselectedItemTintColor", nativeobjectInstance.ColorToUIColor (0xFFFFFFFF))
    nativeobjectInstance.SetField ("barTintColor",            nativeobjectInstance.ColorToUIColor (0xFF000000))
        
    TabControl.Pages = Array (CreateTabBarItem ("Chat",    0xF1D7, modulePage1), _
                              CreateTabBarItem ("Balance", 0xF24E, modulePage2), _
                              CreateTabBarItem ("Mail",    0xF003, modulePage3))
    App.KeyController = TabControl
    
End Sub

Private Sub CreateTabBarItem (stringTitle As String, intIconCode As Int, modulePage As Object) As Page

    Dim bitmapInstance                                                  As Bitmap
    Dim pageInstance                                                    As Page
    Dim tabBarItemInstance                                              As TabBarItem
    
    bitmapInstance = IconAwesome (intIconCode, Colors.Black, 30)
    tabBarItemInstance.Initialize (stringTitle, bitmapInstance, bitmapInstance)
    tabBarItemInstance.SetFont (Font.CreateNew (14))
    pageInstance = CallSub (modulePage, "Initialize")   
    pageInstance.TabBarItem = tabBarItemInstance
    Return pageInstance
    
End Sub

Private Sub IconAwesome (intCode As Int, intColor As Int, intIconSize As Int) As Bitmap
    
    Dim bitmapInstance                                                  As Bitmap
    Dim canvasInstance                                                  As Canvas
    Dim floatFontSize                                                   As Float
    Dim labelInvisible                                                  As Label
    Dim panelInvisible                                                  As Panel
    
    labelInvisible.Initialize ("")
    labelInvisible.Text = Chr (intCode)
    floatFontSize = intIconSize + 0.25
    labelInvisible.Width = intIconSize + 1
    Do While ((labelInvisible.Width > (intIconSize - 1)) Or (labelInvisible.Height > (intIconSize - 1)))
        floatFontSize = floatFontSize - 0.25
        labelInvisible.Font = Font.CreateFontAwesome (floatFontSize)
        labelInvisible.SizeToFit
    Loop
        
    panelInvisible.Initialize ("")
    panelInvisible.Width  = intIconSize
    panelInvisible.Height = intIconSize

    canvasInstance.Initialize (panelInvisible)
    canvasInstance.DrawText (Chr (intCode), (intIconSize - labelInvisible.Width) / 2, floatFontSize + (intIconSize - labelInvisible.Height) / 2, Font.CreateFontAwesome (floatFontSize), intColor, "")
    
    bitmapInstance = canvasInstance.CreateBitmap
    canvasInstance.Release
    Return bitmapInstance
    
End Sub

ModulePage1:
Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'Public variables can be accessed from all modules.

    Private pg As Page

End Sub

Public Sub Initialize As Page
    Log("initialize")
    pg.Initialize("pg")
    pg.RootPanel.LoadLayout("layout1")   
    Return pg
    
End Sub

Private Sub pg_resize (Width As Int, Height As Int)
    Log("Pagemain resize")
    Dim r As Rect = pg.SafeAreaInsets
    pg.RootPanel.SetLayoutAnimated(0, 1, r.Left, r.Top, Width - r.Right - r.Left, Height - r.Bottom - r.Top)
End Sub

I added in ModulePage1 the pg_resize event as I usually do, but seems not to work properly. The event is fired but pg.SafeAreaInsets contains all zeroes and the whole screen is alway occupied

What's wrong ?
 

marcick

Well-Known Member
Licensed User
Longtime User
Sorry. The wrong element it's me. I forgot to add The Pnlroot in the layout. Everything works correct as in the tutorial.
I think I'm a bit tired. Sorry again.
 
Upvote 0
Top