NSTableviewセルに線を斜めに描く方法はありますか?これを行うにはサンプルを投稿してください.Macの開発に新しいです。この問題で私を助けてください。特定のNSTableviewセルに斜めに線を描く
ありがとうございます.......
NSTableviewセルに線を斜めに描く方法はありますか?これを行うにはサンプルを投稿してください.Macの開発に新しいです。この問題で私を助けてください。特定のNSTableviewセルに斜めに線を描く
ありがとうございます.......
はい、簡単です。
あなたが実際にNSTableView
は、テキストを表示するために使用する細胞の種類であるNSTextFieldCell
のサブクラスを作成する必要があります。
クラスをサブクラス化すると、そのクラスの新しいバージョンが作成され、元のクラスに加えてすべてのことを行います。
これはXcode 4を使用しています.Xcode 3を使用している場合はお知らせください。 Xcodeで
、ファイル]> [新規]> [新規ファイルを選択して、新しいファイルを作成... のObjective-Cクラスを選択するポップアップ表示シートで
そして、を打ちました。です。
それ我々が変更されたコピーを作ることになりますものですNSTextFieldCell
のサブクラスで、作成します。ヒット次はです。
あなたが欲しいものとして保存することができますが、このチュートリアルの目的のために、MyDiagonalLinedTextFieldCellとして保存します。ヒット保存
2つの新しいファイルがポップアップする必要があります。 .Mファイルに
クリックします。これは、クラス内のメソッドが何を行うかを示す実装ファイルです。 その内容は以下のようになります。init
方法以下
//
// 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
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 ++) {
}
これは0
に等しいint
を行い、ループを実行するたびにカウントしたものに加えて、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
をクリックします。 テーブルビューの行のセルを青色になるまでクリックします。 MyDiagonalLinedTextFieldCell
に
変更クラスと入力してヒット:
次に、そのように見える右サイドバーにボタンを押してください。
は、今すぐあなたの労働の成果を実行して、楽しんでヒット!描画コードと
混乱あなたがしたい行の正確な種類を取得するまで。
ご不明な点がありましたらお気軽にお問い合わせください。
ありがとうございました....続きを読む – Sonu
大歓迎です。 – spudwaffle