2010-12-11 97 views
1

我有一個類似於NSBox的自定義視圖子類,它繪製了一個圓角框背景。問題是,如果我在框視圖中放置一個像NSTableView的視圖,它不會剪裁到圓角。有沒有辦法繞過NSTableView及其父滾動視圖的角落?NSTableView上的圓角

回答

2

我還沒有試過這個表視圖,但與其他控件。

在NSTableView的子類(或任何視圖/控制你想夾)

  1. 覆蓋drawRect:
  2. 你想要的(可能appendBezierPathWithRoundedRect:xRadius:yRadius:只記得要使用的視圖的邊界的形狀創建NSBezierPath大小)
  3. 發送路徑addClip消息給形狀添加到視圖的剪切路徑
  4. 調用超類的drawRect:

如果表視圖有一個標題,你可能需要通過繼承NSTableHeaderView的子類來剪輯頂角。如果你有滾動條,你可能必須對它們做同樣的事情,除了只剪輯某些角落。希望你沒有滾動條,因爲我懷疑這看起來不錯。基本上你想剪輯繪製該部分的視圖/控件,剪切父視圖不會導致子視圖被剪切。

如果你看看Apple的Xcode歡迎窗口,他們可以通過在頂部繪製一個自定義標題和在底部繪製一個文本塊來避開它,因此它們不必繞過表格視圖本身。如果你能做到這樣的事情,我會的。

+1

謝謝,我最終重新思考我的設計,以便我不必這樣做。 – indragie 2011-01-08 02:06:38

+0

@indragie你最終做了什麼? – 2012-08-15 23:37:17