0

SproutCore 1.xを使用していて、SC.ScrollViewのcontentViewとしてカスタムビューを使用しようとしています。

コードは次のようになります。

SC.ScrollView.design({
 canScrollVertical:true,
 hasHorizontalScroller:false,
 contentView:SC.View.design({
      className:"myClass",
      render:function(context){
        var context = context.begin('div');
        context.push('LOTS OF THINGS HERE TAKING UP SOME LARGE ARBITRARY AMOUNT OF SPACE…');
        context.end();
      }
 })
})

問題は、contentViewのサイズが任意であるため(つまり、ロードされた情報に基づいて動的に変化するため)、スクロールビューはスクロールする必要があることを認識していないように見えることです。ロードされるコンテンツの量がわからないため、高さを完全に設定することはできません。

スクロールビューにcontentViewの高さを動的に表示するように指示するにはどうすればよいですか?

4

1 に答える 1

1

設定してみてください

useStaticLayout: YES

カスタムビューで、ビューのレイアウトに高さを設定しないでください。SC.FlowedLayoutまたは、カスタムビューに子ビューがある場合は混合します。基本的に、絶対ポジショニングではなく相対ポジショニングを使用すると言っています。

または、コンテンツに基づいてビューの高さを計算し、ビューのheightプロパティを調整できる場合があります(つまりthis.adjust({height: 100})、コンテンツが変更されるたびにビュー内で)。それはアニメーションと非常にうまく調和しています。ただし、コンテンツの性質によっては、不可能な場合があります。

ちなみに、ドラッグアンドドロップを行っていない場合(カスタムビューはコレクションではないため、おそらくそうではありません)、またはスクローラーでSCのイベントにフックする必要がない場合(dndしたい場合のように)物事)overflow=autoトップレベルのビューにdivを追加するだけです。SCスクロールビューも必要ありません。これを行うと、ブラウザのネイティブスクローラーが表示されます。これは良いことかもしれません。

于 2011-12-10T23:01:58.777 に答える