Objective c 是否将NSTEXT字段中的文本与顶部对齐?

Objective c 是否将NSTEXT字段中的文本与顶部对齐?,objective-c,swift,cocoa,Objective C,Swift,Cocoa,在这里,您可以看到使用Xcode中的视图调试器检查的NSTextField。我想让文本顶部在其边界框内对齐,而不是底部对齐,这样我就可以将文本底部与其他一些内容图像对齐,等等 如何获得这样的布局 您需要对NSTextFieldCell进行子类化,并重写以下方法: - (NSRect)drawingRectForBounds:(NSRect)theRect 您可以使用newRect=[super-drawingRectForBounds:theRect];然后尝试操纵newRect的值来实现您想

在这里,您可以看到使用Xcode中的视图调试器检查的NSTextField。我想让文本顶部在其边界框内对齐,而不是底部对齐,这样我就可以将文本底部与其他一些内容图像对齐,等等

如何获得这样的布局

您需要对NSTextFieldCell进行子类化,并重写以下方法:

- (NSRect)drawingRectForBounds:(NSRect)theRect
您可以使用newRect=[super-drawingRectForBounds:theRect];然后尝试操纵newRect的值来实现您想要的

如果需要,还可以覆盖这些方法:

- (void)editWithFrame:(NSRect)aRect inView:(NSView *)controlView editor:(NSText *)textObj delegate:(id)anObject event:(NSEvent *)theEvent

- (void)selectWithFrame:(NSRect)aRect inView:(NSView *)controlView editor:(NSText *)textObj delegate:(id)anObject start:(NSInteger)selStart length:(NSInteger)selLength

您可以尝试sizeToFit方法。

如果文本字段的底部不是基线所基于的,那么您为什么要关心它的底部呢?换句话说,为什么文本字段高于其固有高度对您的情况很重要?也许有一种不同的方法可以避免这个问题。因为当topAnchor和文本的实际顶部之间有任意数量的空白时,使用topAnchor对齐不是很有用。我不明白。文本字段通常足够高,以适应字体上升加下降,再加上一点边框。为什么您的文本字段比字体高这么多?我想一定是你干的。如果那不是你想要的,你为什么要那样做?允许文本字段具有其固有高度,并且与顶部对齐将位于潜在文本的顶部,尽管您必须考虑像Å这样的超高字符。即使文本字段有点太高,也只需使用递增符的偏移常量与基线对齐即可。不,不幸的是,这是标准的NSTextField行为。@ClausJørgensen你试过我的建议吗?@downvoter我试过这种方法,效果很好。然而,您缺乏可可知识或编程技能差可能会导致您发现它没有用处。所以你想投多少就投多少。