Sunday, February 19, 2017

Framework7 - Status Bar

Description

The iOS 7+ allows you to build full screen apps which could create an issue when your status bar overlaps your app. Framework7 solves this problem by detecting whether your app is in full screen mode or not. If your app is in full screen mode then, the Framework7 will automatically adds with-statusbar-overlay class to <html> (or removes if app is not in full screen mode) and you need to add statusbar-overlay class in <body> as shown in below code:

<html class="with-statusbar-overlay">
...
<body>
  <div class="statusbar-overlay"></div>
  ...
By default, <div> will always be hidden and fixed on top of your screen. It will only be visible when app is in full screen mode and with-statusbar-overlay class is added to <html>.

Example

The below example demonstrates use of status bar in the Framework7:
<!DOCTYPE html>
<html>
   <head>
      <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no, minimal-ui">
      <meta name="apple-mobile-web-app-capable" content="yes">
      <meta name="apple-mobile-web-app-status-bar-style" content="black">
      <title>My App</title>
      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.min.css">
      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.colors.min.css">
   </head>
   <body>
      <div class="statusbar-overlay"></div>
      <div class="panel-overlay"></div>
      <div class="panel panel-right panel-reveal">
         <div class="content-block">
            <p>Contents goes here...</p>
         </div>
      </div>
      <div class="views">
         <div class="view view-main">
            <div class="navbar">
               <div class="navbar-inner">
                  <div class="center sliding">My App</div>
                  <div class="right">
                     <a href="#" class="link icon-only open-panel"><i class="icon icon-bars"></i></a>
                  </div>
               </div>
            </div>
            <div class="pages navbar-through toolbar-through">
               <div data-page="index" class="page">
                  <div class="page-content">
                     <p>This is simple application...</p>
                     <p>page contents goes here!!!</p>
                  </div>
               </div>
            </div>
            <div class="toolbar">
               <div class="toolbar-inner">
                  <a href="#" class="link">First Link</a>
                  <a href="#" class="link">Second Link</a>
               </div>
            </div>
         </div>
      </div>
      <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/js/framework7.min.js"></script>
      <script>
         // here initialize the app
         var myApp = new Framework7();

         // If your using custom DOM library, then save it to $$ variable
         var $$ = Dom7;

         // Add the view
         var mainView = myApp.addView('.view-main', {
           // enable the dynamic navbar for this view:
           dynamicNavbar: true
         });

         //use the 'pageInit' event handler for all pages
         $$(document).on('pageInit', function (e) {
           //get page data from event data
           var page = e.detail.page;
         })
      </script>
   </body>
</html>

Output

Let's carry out the following steps to see how above code works:
  • Save above html code as status_bar.html file in your server root folder.
  • Open this HTML file as http://localhost/status_bar.html and output as below gets displayed.
The example shows the use of the statusbar-overlay which allows you to build full screen apps when your status bar overlaps the app.

No comments:

Post a Comment