Archive for the ‘NSView’ Category

Viewに背景色をつけたい場合ってたまーにあります。
また、色を途中で変更したい場合とかもありますよね。

これらを実現するために、NSViewのサブクラスを作って実装してみました。

追加したインスタンス変数
NSColor * _color;
追加したメソッド
setBackgroundColor:(NSColor *)color

.mファイル

  1. //オーバーライド
  2. - (id)initWithFrame:(NSRect)frame {
  3. self = [super initWithFrame:frame];
  4. if (self) {
  5. // Initialization code here.
  6. _color = [ NSColor windowBackgroundColor ]; //初期の色は、Windowの背景色
  7. }
  8. return self;
  9. }
  10.  
  11. //オーバーライド
  12. //背景を設定
  13. - (void)drawRect:(NSRect)rect {
  14. // Drawing code here.
  15. [ _color set ];
  16. NSRectFill(rect);
  17. }
  18.  
  19.  
  20. -(void)setColor:(NSColor *)color{
  21. _color = color;
  22.  
  23. //描画し直し
  24. [ self display ];
  25. }

InterfaceBuilderはこんな感じで配置

で、実行結果はこのようになった