gpt4 book ai didi

xcode - 自动调整 NSButton 的大小以适应以编程方式更改的文本 (Xcode)

转载 作者:行者123 更新时间:2023-12-03 16:03:14 26 4
gpt4 key购买 nike

我有一个 NSButton(按钮),其中包含一些在 Interface Builder/Xcode 中内置的临时标题文本。在其他地方,按钮内的标题文本以编程方式更改为未知长度的字符串(实际上,多次更改为许多不同的长度)。

我希望按钮自动调整大小(具有固定的右侧位置 - 因此它向左增长)以适合以编程方式插入为按钮文本的任何长度的字符串。但我无法弄清楚。有什么建议么?提前致谢!

最佳答案

如果您无法按照@jtbandes的建议使用自动布局(仅在Lion中可用),那么您可以在设置其字符串值后调用[button sizeToFit],这将使按钮调整大小以适合其字符串。然后,您需要根据新的宽度调整其框架。

您无法自动执行此操作,但在 NSButton 的子类中很容易完成。

@implementation RKSizeToFitButton
- (void)setStringValue:(NSString*)aString
{
//get the current frame
NSRect frame = [self frame];

//button label
[super setStringValue:aString];

//resize to fit the new string
[self sizeToFit];

//calculate the difference between the two frame widths
NSSize newSize = self.frame.size;
CGFloat widthDelta = newSize.width - NSWidth(frame);
//set the frame origin
[self setFrameOrigin:NSMakePoint(NSMinX(self.frame) - widthDelta, NSMinY(self.frame))];
}
@end

这样,您只需在 Interface Builder 中将按钮的类设置为 RKSizeToFitButton,然后在按钮上调用 setStringValue: 即可更改其标签,这样就可以“正常工作”,无需任何操作。附加代码。

关于xcode - 自动调整 NSButton 的大小以适应以编程方式更改的文本 (Xcode),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7212553/

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