2017-03-16 7 views
0

iOSのページにビューを配置する方法を理解するのは難しいです。NativeScriptでJavascriptを使用してビューフレームを設定する

Javascriptを使用してビューのframeを設定することはできますか?

私は以下を試しましたが、うまくいかないようです。ラベルはページに追加されていますが、フレームは無視されます。

XML

<Page xmlns="http://schemas.nativescript.org/tns.xsd" loaded="onLoaded" navigatedTo="onNavigatedTo" class="page"> 
    <StackLayout id="test"> 

    </StackLayout> 
</Page> 

JS

var labelModule = require("ui/label"); 

var page; 

exports.onLoaded = function(args) { 
    page = args.object; 
} 

exports.onNavigatedTo = function(args) { 
    var test = page.getViewById('test'); 

    positionEl(test);  
} 

function positionEl(el) { 
    var myLabel = new labelModule.Label(); 
    myLabel.text = 'My label'; 
    myLabel.ios.frame = {origin: {x:200, y:200}, size: {width: 200, height:200}}; 

    el.addChild(myLabel); 
} 

CSS

#test { 
    background-color: red; 
} 

#test Label { 
    background-color: green; 
    color: #FFF; 
} 

これは、左の画像になります。私はそれが右のイメージのように見えることを期待しています。

reasonsの場合、私はこのためにAbsoluteLayoutを使いたくありません。 内の任意の位置付けを可能にする解決策が必要です。親要素タイプ。

enter image description here

答えて

2

StackLayoutはおそらく、任意の位置に最適ではありません。

<AbsoluteLayout id="test" backgroundColor="green"> 
    </AbsoluteLayout> 

...とこのようにそれを実行します:あなたはAbsoluteLayoutを使用することができます

function positionEl(el) { 
    var myLabel = new labelModule.Label(); 
    myLabel.text = 'My label'; 
    myLabel.backgroundColor = "yellow"; 
    myLabel.textAlignment = "center"; 
    myLabel.width = 200; 
    myLabel.height = 200; 

    el.addChild(myLabel); 
    AbsoluteLayout.setTop(myLabel, 200); 
    AbsoluteLayout.setLeft(myLabel, 100); 
} 
+0

こんにちはエディ。 AbsoluteLayout(https://discourse.nativescript.org/t/absolute-fixed-positioning-without-absolutelayout/648)を使用したくない理由があります。私は_any_要素内の任意の位置を可能にする解決策を見つけることを望んでいます。 – Turnip

0

あなたがスタイルにしてみてください可能性があります

Object.assign(myLabel.style, 
     { 
     left: '200px', 
     top: '200px', 
     width: '200px', 
     height: '200px' 
     } 
); 
関連する問題