gpt4 book ai didi

objective-c - NSTextField - 子类化和 drawRect 导致文本不加载

转载 作者:太空狗 更新时间:2023-10-30 04:00:22 25 4
gpt4 key购买 nike

试图圆出 NSTextField 的边框(左上角的小黑框):http://cl.ly/image/2V2L1u3b3u0G

所以我继承了 NSTextField:

MyTextField.h

#import <Cocoa/Cocoa.h>
@interface HATrackCounterField : NSTextField
@end

我的文本字段.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

现在它不显示文本字段文本:http://cl.ly/image/1J2W3K431C04

我是 objective-c 的新手,看起来这应该很容易,所以我可能只是做错了什么......

谢谢!

注意:我通过 Collection View 设置文本,并且我在不同的点尝试了 setStringValue: 也无济于事。

最佳答案

您的文本字段的文本没有显示,因为您覆盖了 -drawRect 并且没有在其中调用 [super drawRect:dirtyRect]

在你的情况下,我认为最简单的方法是使用剪辑蒙版:让 NSTextField 执行绘图然后剪辑区域:

- (void)drawRect:(NSRect)dirtyRect
{
[NSGraphicsContext saveGraphicsState];
[[NSBezierPath bezierPathWithRoundedRect:dirtyRect xRadius:3.0 yRadius:3.0] setClip];
[super drawRect:dirtyRect];
[NSGraphicsContext restoreGraphicsState];
}

一般来说,最好继承 NSTextFieldCell 而不是自定义绘图,因为单元格负责绘图。

关于objective-c - NSTextField - 子类化和 drawRect 导致文本不加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11824630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com