在NSTableview單元格中是否有對角線繪製線條的方法?您可以發佈樣本來做到這一點。我對Mac開發很陌生。請幫助我解決這個問題。在特定的NSTableview單元格中對角線繪製線條
在此先感謝.......
在NSTableview單元格中是否有對角線繪製線條的方法?您可以發佈樣本來做到這一點。我對Mac開發很陌生。請幫助我解決這個問題。在特定的NSTableview單元格中對角線繪製線條
在此先感謝.......
是的,很容易。
你需要創建一個子類的NSTextFieldCell
這實際上是細胞的NSTableView
用於顯示文本的類型。
爲類創建子類會創建該類的新版本,該類會完成原始類的所有功能以及更多功能。
這是使用Xcode 4.如果您使用的是Xcode 3,請告訴我。
在Xcode中,通過選擇文件>新建>新建文件創建一個新的文件...
在彈出的單選Objective-C類並擊中下一步。
讓它的NSTextFieldCell
一個子類,這就是我們將作出的修改後的副本。擊中下一個。
你可以把它保存爲你想要的東西,但對於本教程的目的,將其保存爲MyDiagonalLinedTextFieldCell。命中保存。
兩個新文件彈出。
點擊.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
文件。 單擊表格視圖的一行中的單元格,直到它變成藍色。
然後,點擊按鈕在右邊欄,看起來像這樣:
變化的類以MyDiagonalLinedTextFieldCell
並按下回車鍵。
現在點擊運行,並享受自己的勞動成果!
惹的繪製代碼,直到你得到確切的那種線條的你想要的。
隨時與我聯繫的任何問題。
感謝它幫了我很多...... – Sonu
非常歡迎。 – spudwaffle