我有一个 NSButton(按钮),在 Interface Builder / Xcode 中内置了一些临时标题文本。在其他地方,按钮内的标题文本以编程方式更改为未知长度的字符串(实际上,多次更改为许多不同的长度)。
我希望按钮自动调整大小(具有固定的右侧位置 - 因此它向左增长)以适合任何长度的字符串作为按钮文本以编程方式插入。但我无法弄清楚。有什么建议么?提前致谢!
我有一个 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
这样,您只需RKSizeToFitButton
在 Interface Builder 中将按钮的类设置为,然后调用setStringValue:
按钮更改其标签将“正常工作”而无需额外代码。
当然!只需使用自动布局!:)