NSTableview セルで斜めに線を引く方法はありますか?これを行うサンプルを投稿してください.Mac 開発は初めてです.この問題で私を助けてください.
前もって感謝します.......
NSTableview セルで斜めに線を引く方法はありますか?これを行うサンプルを投稿してください.Mac 開発は初めてです.この問題で私を助けてください.
前もって感謝します.......
はい、簡単に。
テキストを表示するために実際に使用するセルのタイプであるサブクラスを作成する必要があります。NSTextFieldCell
NSTableView
クラスをサブクラス化すると、元のクラスが行っていたことすべてに加えて、そのクラスの新しいバージョンが作成されます。
これは Xcode 4 を使用しています。Xcode 3 を使用している場合はお知らせください。
Xcode で、[File] > [New] > [New File... ] を選択して新しいファイルを作成します。
ポップアップするシートで、Objective-C Classを選択し、 Nextを押します。
のサブクラスにしNSTextFieldCell
ます。これは、変更されたコピーを作成するものです。[次へ] をクリックします。
好きなように保存できますが、このチュートリアルではMyDiagonalLinedTextFieldCellとして保存します。[保存] をクリックします。
2 つの新しいファイルがポップアップ表示されます。
.mファイルをクリックします。これは、クラスのメソッドが何をするかを伝える実装ファイルです。その内容は次のようになります。
//
// MyDiagonalLinedTextFieldCell.m
// CustomCell
//
// Created by spudwaffle on 7/4/11.
// Copyright 2011 __MyCompanyName__. All rights reserved.
//
#import "MyDiagonalLinedTextFieldCell.h"
@implementation MyDiagonalLinedTextFieldCell
- (id)init
{
self = [super init];
if (self) {
// Initialization code here.
}
return self;
}
@end
メソッドの下にinit
メソッドを追加しdrawInteriorWithFrame: inView:
ます。アプリケーションはdrawInteriorWithFrame: inView:
、セルを画面に表示する必要があるたびにメソッドを呼び出します。
コードは次のようになります。
@implementation MyDiagonalLinedTextFieldCell
- (id)init
{
self = [super init];
if (self) {
// Initialization code here.
}
return self;
}
- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
}
@end
最初に行う必要があるのは、標準を描くことですNSTextFieldCell
。これは、次のように呼び出すことで実行できます。
[super drawInteriorWithFrame:cellFrame inView:controlView];
NSTextFieldCell
これにより、プログラムが必要とする正確な領域に法線が描画されます。
次に、カスタム ラインを描画する必要があります。それらを 5 ピクセル離して 1 ピクセル幅にしましょう。これにはfor
ループが必要です。
for (int i = 0; i < cellFrame.size.width/5; i ++) {
}
これにより、ループが実行されるたびにそのカウントが追加され、描画する必要がある線の量に達すると停止しint
ます。0
i
次に、描画コードを挿入して線を描画します。
for (int i = 0; i < cellFrame.size.width/5; i ++) {
NSBezierPath *path = [NSBezierPath bezierPath];
[path moveToPoint:NSMakePoint(i * 5, cellFrame.origin.y)];
[path lineToPoint:NSMakePoint((i * 5) + 2, cellFrame.origin.y + cellFrame.size.height)];
[[NSColor grayColor]set];
[path setLineWidth:1];
[path stroke];
}
これ:
NSBezierPath
線や形状の描画に使用される を作成します。1
ます。for
ループのおかげで、これを各行に対して何度も実行します。
これが完成したMyDiagonalLinedTextFieldCell.m
ファイルです。今のところは気にする必要はありません.h
。
#import "MyDiagonalLinedTextFieldCell.h"
@implementation MyDiagonalLinedTextFieldCell
- (id)init
{
self = [super init];
if (self) {
// Initialization code here.
}
return self;
}
- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
[super drawInteriorWithFrame:cellFrame inView:controlView];
for (int i = 0; i < cellFrame.size.width/5; i ++) {
NSBezierPath *path = [NSBezierPath bezierPath];
[path moveToPoint:NSMakePoint(i * 5, cellFrame.origin.y)];
[path lineToPoint:NSMakePoint((i * 5) + 2, cellFrame.origin.y + cellFrame.size.height)];
[[NSColor grayColor]set];
[path setLineWidth:1];
[path stroke];
}
}
@end
ここで、このクラスを使用するようにテーブル ビューのセルを設定する必要があります。
ファイルをクリックしますMainMenu.xib
。青色に変わるまで、テーブル ビューの行のセルをクリックします。
次に、右側のバーにある次のようなボタンを押します。
Classを に変更し、MyDiagonalLinedTextFieldCell
Enter キーを押します。
今すぐ実行して、あなたの労働の成果を楽しんでください!
必要な正確な種類の線が得られるまで、描画コードをいじります。
ご不明な点がございましたら、お気軽にお問い合わせください。