2015-02-06 1 views
0

В моем приложении для osx у меня есть NSCombobox, который отображает список элементов. Моя проблема заключается в том, что все эти элементы всегда выровнены слева, и мне нужно, чтобы последний элемент оставался центрированным. Я знаю, что в построителе интерфейса пользователь может установить выравнивание, но как насчет выравнивания только определенных элементов? Как я могу достичь этого правильно?Cocoa osx NSCombobox align items center

enter image description here

Извините за мой бедный английский. Заранее спасибо.

ответ

0

Наконец я решил так:

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

Возможно, но не через IB, насколько я знаю. Вам необходимо программно создать NSMenu и добавить к нему представления. В этом представлении должны быть метки с выравниванием по центру.

Это тяжелее памяти, чем простое меню, поэтому я предлагаю вам не делать этого, если он не используется для всех выпадающих списков.

+0

Вы можете разместить любой пример или ссылку? – user3065901

2

Когда вы получите всплывающее уведомление, и вы можете открыть окно со списком и переместить нужный элемент и изменить выравнивание. Пожалуйста, обратитесь этот код https://github.com/ilg/IGResizableComboBox