2016-06-02 10 views
0

Ich versuche, die Deckkraft der Aktionsleiste zu ändern. Beim Test versuche ich die Farbe gegenüber der nativen Methode zu ändern, aber das wird nicht funktionieren.NativeScript ActionBar Opazität

Ich verstehe nicht warum, andere native Funktionen wie UIAlert funktioniert gut. Ich habe keine Fehler oder irgendetwas anderes nur, dass die ActionBar wie folgt aussehen:

enter image description here

Mein Ziel ist es völlig transparent, da der Hintergrund ein Gefälle aufweist.

Dies ist meine Seite geladen Funktion:

loaded(args){ 
     let page = <Page>args.object; 
     page.bindingContext = appViewModel; 

     if (page.ios) { 
      var controller = frameModule.topmost().ios.controller; 
      var navigationBar = controller.navigationBar; 
      navigationBar.barTintColor = UIColor.blueColor(); 
     } 
    } 

Dank für Hilfe

UPDATE

mein ts Code:

var frameModule = require("ui/frame"); 
import {topmost} from "ui/frame"; 
import {Page} from "ui/page"; 
import {Observable, EventData} from "data/observable"; 
import {View} from "ui/core/view"; 

let appViewModel = new Observable({selectedPage: "dashboard"}); 
export abstract class BasePage { 
    //implement this function in the inheriting pages to set their specific binding context 
    abstract mainContentLoaded(args:EventData); 

    loaded(args){ 
       let page = <Page>args.object; 
       page.bindingContext = appViewModel; 

       if (page.ios) { 
      frameModule.topmost().ios.navBarVisibility = "always"; 

      page.ios.title = "Test Application"; 

      var controller = frameModule.topmost().ios.controller; 

      var navBar = controller.navigationBar; 
      navBar.barTintColor = UIColor.redColor(); 
      navBar.navigationBarHidden = false; 
      navBar.barStyle = UIBarStyle.UIBarStyleBlackTranslucent; 
     } 

    } 

    toggleDrawer(){ 
     let page = <Page>topmost().currentPage; 
     let drawer = <any>page.getViewById("sidebar"); 
     drawer.toggleDrawerState(); 
    } 
    navigate(args){ 
     let pageName = args.view.text.toLowerCase(); 
     appViewModel.set("selectedPage", pageName); 
     topmost().navigate("modules/" + pageName + "/" + pageName); 
    } 

} 

mein xml:

<page 
    xmlns="http://schemas.nativescript.org/tns.xsd" 
    xmlns:drawer="nativescript-telerik-ui/sidedrawer" 
    xmlns:widgets="shared/widgets" 
    loaded="loaded"> 

    <page.actionBar> 
    <action-bar> 
     <navigation-button icon="res://ic_menu" tap="toggleDrawer" ios:visibility="collapsed" /> 
     <action-bar.actionItems> 
     <ios> 
      <action-item icon="res://ic_menu" ios.position="left" tap="toggleDrawer" /> 
     </ios> 
     </action-bar.actionItems> 
    </action-bar> 
    </page.actionBar> 

    <drawer:rad-side-drawer id="sidebar"> 
    <drawer:rad-side-drawer.mainContent> 

    </drawer:rad-side-drawer.mainContent> 
    <drawer:rad-side-drawer.drawerContent> 
     <widgets:drawer-content /> 
    </drawer:rad-side-drawer.drawerContent> 
    </drawer:rad-side-drawer> 

</page> 

Antwort

1

Die folgende Lösung erarbeitet für mich (iOS 9.3 mit NativeScript 2.0.1)

if (page.ios) { 
    frameModule.topmost().ios.navBarVisibility = "always"; 

    page.ios.title = "Test Application"; 

    var controller = frameModule.topmost().ios.controller; 

    var navBar = controller.navigationBar; 
    navBar.barTintColor = UIColor.redColor(); 
    navBar.navigationBarHidden = false; 
    navBar.barStyle = UIBarStyle.UIBarStyleBlackTranslucent; 
} 
+0

dieser Code keine Auswirkung auf meine Aktion-Bar. Ich arbeite mit Typoskript. Ich verstehe nicht, warum, wenn ich Ihren Code in ein neues Projekt, das mit JS funktioniert, dann ich es funktioniert (neues Projekt mit ts hat den Code keine Wirkung). Ich habe die Plattformdeklarationen und die Referenzen installiert. Wo ist mein Problem? – Aron