gpt4 book ai didi

cocoa - NSButton setAlignment 不起作用

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

我用过

[button setAlignment:NSCenterTextAlignment];

使文本显示在按钮的中心。

成功了。

但是如果我在代码之前设置按钮标题属性,按钮“setAlignment”将不起作用

- (void)setButtonTitle:(NSButton*)button fontName:(NSString*)fontName fontSize:(CGFloat)fontSize fontColor:(NSColor*)fontColor;
{

NSMutableAttributedString *attributedString =
[[NSMutableAttributedString alloc] initWithString:[button title]
attributes:[NSDictionary dictionaryWithObject:[NSFont fontWithName:fontName size:fontSize]
forKey:NSFontAttributeName]];
[attributedString addAttribute:NSForegroundColorAttributeName
value:fontColor
range:NSMakeRange(0, [[button title] length] )];


[button setAttributedTitle: attributedString];
[button setAlignment:NSCenterTextAlignment];//button title alignment always displayed as 'NSLeftTextAlignment' rather than 'NSCenterTextAlignment'.

}

标题对齐方式始终显示为“NSLeftTextAlignment”而不是“NSCenterTextAlignment”。

欢迎大家留言

最佳答案

由于您使用属性字符串作为按钮标题,因此该字符串中的属性负责设置对齐方式。

要使属性字符串居中,请添加具有居中对齐值的 NSParagraphStyleAttributeName 属性:

NSMutableParagraphStyle *centredStyle = [[[NSParagraphStyle defaultParagraphStyle] mutableCopy] autorelease];
[centredStyle setAlignment:NSCenterTextAlignment];

NSDictionary *attrs = [NSDictionary dictionaryWithObjectsAndKeys:centredStyle,
NSParagraphStyleAttributeName,
[NSFont fontWithName:fontName size:fontSize],
NSFontAttributeName,
fontColor,
NSForegroundColorAttributeName,
nil];
NSMutableAttributedString *attributedString =
[[NSMutableAttributedString alloc] initWithString:[button title]
attributes:attrs];

[button setAttributedTitle: attributedString];

在上面的代码中,我创建了一个 attrs 字典,其中包含属性字符串的所有属性。从您的代码来看,字体颜色无论如何都应该应用于整个字符串。

关于cocoa - NSButton setAlignment 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15389277/

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