この問題は、(サーフェスではなく) Scrollview にビューを追加することに関係しています。
単一のサーフェスを持つビューを追加すると、すべてが意図したとおりに機能するようです。各ビューは、互いの上にきれいに積み重なっています。
ただし、複数のサーフェスを含むビューを追加すると、うまくスタックしません。この場合、各ビューはスクロールビュー ビューポートの正確な高さに設定されているようです。したがって、各ビューの高さが 100 ピクセルしかなく、スクロールビュー ビューポートの高さが 500 ピクセルの場合、スクロール時に各ビューの間に 400 ピクセルの空白ができます。また、View が scrollview vp よりも高い場合、View はオーバーラップします。
質問は次のとおりです。複数のサーフェスをスクロールビューに追加し、それらをうまくスタックさせるにはどうすればよいですか?
スクロールビューを構築する関数の例...
function _createScrollview() {
var scrollview = new Scrollview();
var surfaces = [];
scrollview.sequenceFrom(surfaces);
for (var i = 0, temp; i < 10; i++) {
temp = new TestView();
temp.pipe(scrollview);
surfaces.push(temp);
}
this.add(scrollview);
}
ビューの例...
define(function(require, exports, module) {
var View = require('famous/core/View');
var Surface = require('famous/core/Surface');
var Transform = require('famous/core/Transform');
var StateModifier = require('famous/modifiers/StateModifier');
// constructor
function TestView() {
View.apply(this, arguments);
_createBox_a.call(this);
_createBox_b.call(this);
}
// prototype
TestView.prototype = Object.create(View.prototype);
TestView.prototype.constructor = TestView;
// options
TestView.DEFAULT_OPTIONS = {};
// helper functions
function _createBox_a() {
var surf = new Surface({
size: [undefined, 150],
properties: {
backgroundColor: 'red',
}
});
surf.pipe(this._eventOutput);
this.add(surf);
}
function _createBox_b() {
var surf = new Surface({
size: [undefined, 150],
properties: {
backgroundColor: 'blue'
}
});
var mod = new StateModifier({
transform: Transform.translate(0, 150, 0)
});
surf.pipe(this._eventOutput);
this.add(mod).add(surf);
}
module.exports = TestView;
});