Cocoa osx NSCombobox 对齐项目中心
Cocoa osx NSCombobox align items center
在我的 osx 申请中,我有一个显示项目列表的 NSCombobox。
我的问题是所有这些项目总是向左对齐,我需要最后一个项目保持居中对齐。我知道在 Interface Builder 中用户可以设置对齐方式,但是,如何只对齐某些项目呢?我怎样才能正确地做到这一点?
抱歉我的英语不好。提前致谢。
有可能,但据我所知不能通过 IB。您需要以编程方式创建一个 NSMenu 并向其添加视图。然后,这些视图应具有居中对齐的标签。
这比简单的菜单更占用内存,所以我建议您不要这样做,除非它不是用于所有下拉菜单。
收到时会弹出通知,您可以访问组合框 window 并导航所需的项目并更改对齐方式。请参考这段代码
https://github.com/ilg/IGResizableComboBox
最后我是这样解决的:
- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index
{
//RETURN THIS AT CONCRETE INDEX
NSMutableAttributedString *text;
text = [[NSMutableAttributedString alloc]initWithString:@myText;
NSFont *font = [NSFont fontWithName:@"MyFont" size:16];
[text addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, text.length)];
[text addAttribute:NSForegroundColorAttributeName value:[NSColor blackColor] range:NSMakeRange(0, text.length)];
//add alignment
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setAlignment:NSCenterTextAlignment];
[text addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, text.length)];
return text;
}
在我的 osx 申请中,我有一个显示项目列表的 NSCombobox。 我的问题是所有这些项目总是向左对齐,我需要最后一个项目保持居中对齐。我知道在 Interface Builder 中用户可以设置对齐方式,但是,如何只对齐某些项目呢?我怎样才能正确地做到这一点?
抱歉我的英语不好。提前致谢。
有可能,但据我所知不能通过 IB。您需要以编程方式创建一个 NSMenu 并向其添加视图。然后,这些视图应具有居中对齐的标签。
这比简单的菜单更占用内存,所以我建议您不要这样做,除非它不是用于所有下拉菜单。
收到时会弹出通知,您可以访问组合框 window 并导航所需的项目并更改对齐方式。请参考这段代码 https://github.com/ilg/IGResizableComboBox
最后我是这样解决的:
- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index
{
//RETURN THIS AT CONCRETE INDEX
NSMutableAttributedString *text;
text = [[NSMutableAttributedString alloc]initWithString:@myText;
NSFont *font = [NSFont fontWithName:@"MyFont" size:16];
[text addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, text.length)];
[text addAttribute:NSForegroundColorAttributeName value:[NSColor blackColor] range:NSMakeRange(0, text.length)];
//add alignment
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setAlignment:NSCenterTextAlignment];
[text addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, text.length)];
return text;
}