1

NSTableView2列あります。各列には異なるNSTableCellViewサブクラスが含まれており、状況によってはオーバーラップ効果を実現したい場合があるため、たとえば、列 1 行 1 のビューの上部を前の列 0 行 0 ビューの下部の上に配置できます。

NSTableCellView サブクラス インスタンスのフレームはtableView:viewForTableColumn:row常にオーバーライドされるため、設定しても意味がないことは理解していますが、セル レベルだけでなく行レベルでもクリッピングが発生する可能性があるように感じます。

セル/行の境界の外に描画することは可能ですか?

4

1 に答える 1

0

グラフィックス コンテキストをいじると、任意のビューがその境界の外に描画される可能性があります。アプリケーションの範囲外でメモリ全体に「走り書き」するのが間違っているのと同じように、それを行うのはまったく間違っています。

より安全な (システムの描画状態をより尊重する) アプローチは、各 NSTableRowView の背景を自分で描画することによってそれをごまかすことですが、独自の境界内で垂直に「オフセット」して、行nが行n -1 を除くすべての行の下部を描画するようにします。最初の行。つまり、最初の行を除くすべての行で、行ビューの「上端」は、前の行ビューの下端のように見えるものを描画します。図面では下端が「切り取られています」。このようにして、行の描画方法をより細かく制御するために、スイッチを切り替えてビューの影を取得するという比較的マイナーな利便性を犠牲にします。

于 2013-03-29T17:28:01.433 に答える