Cocoa osx NSCombobox对齐物品中心

时间:2015-02-06 14:34:51

标签: objective-c macos cocoa alignment nscombobox

在我的osx应用程序中,我有一个显示项目列表的NSCombobox。 我的问题是所有这些项目总是与左边对齐,我需要最后一项保持居中对齐。我知道在界面构建器中,用户可以设置对齐,但是,仅对齐某些项目呢?我怎样才能正确实现这一目标?

enter image description here

抱歉我的英语不好。提前致谢。

3 个答案:

答案 0 :(得分:2)

当您收到弹出通知时,您可以访问组合框窗口并导航所需的项目并更改对齐方式。请参考此代码 https://github.com/ilg/IGResizableComboBox

答案 1 :(得分:1)

据我所知,这是可能的,但不是通过IB。您需要以编程方式创建NSMenu并向其添加视图。然后,这些视图应具有中心对齐的标签。

内存比简单的菜单更重,所以我建议你不要这样做,除非它没有用于所有下拉菜单。

答案 2 :(得分:1)

最后我这样解决了:

- (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;  
}