Ale*_*ant 4 macos cocoa objective-c
试图弄清楚NSTextField的边界(左上角的小黑框):http://cl.ly/image/2V2L1u3b3u0G
所以我将NSTextField子类化:
MYTextField.h
#import <Cocoa/Cocoa.h>
@interface HATrackCounterField : NSTextField
@end
Run Code Online (Sandbox Code Playgroud)
MYTextField.m
#import "HATrackCounterField.h"
@implementation HATrackCounterField
- (id)initWithFrame:(NSRect)frame
{
self = [super initWithFrame:frame];
if (self) {}
return self;
}
- (void)drawRect:(NSRect)dirtyRect
{
[[NSColor blackColor] setFill];
[[NSBezierPath bezierPathWithRoundedRect:dirtyRect xRadius:3.0 yRadius:3.0] fill];
}
@end
Run Code Online (Sandbox Code Playgroud)
现在它没有显示文本字段文本:http://cl.ly/image/1J2W3K431C04
我是Objective-c的新手,看起来这应该很容易,所以我可能只是做错了...
谢谢!
注意:我正在通过集合视图设置文本,我setStringValue:在不同的点尝试也无济于事.
您的文本字段文本未显示,因为您覆盖-drawRect并且未[super drawRect:dirtyRect]在其中调用.
在你的情况下,我认为做你想要的最简单的方法是使用剪辑蒙版:只需NSTextField执行绘制ant然后剪辑区域:
- (void)drawRect:(NSRect)dirtyRect
{
[NSGraphicsContext saveGraphicsState];
[[NSBezierPath bezierPathWithRoundedRect:dirtyRect xRadius:3.0 yRadius:3.0] setClip];
[super drawRect:dirtyRect];
[NSGraphicsContext restoreGraphicsState];
}
Run Code Online (Sandbox Code Playgroud)
通常,最好使用子类NSTextFieldCell来进行自定义绘制,因为单元格负责绘制.
| 归档时间: |
|
| 查看次数: |
2463 次 |
| 最近记录: |