在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