В следующем коде я ожидаю, что titleTextAttributesForState:
вернет текстовые атрибуты по умолчанию после создания UISegmentedControl
,
simpleButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:@"My Button"]];
simpleButton.segmentedControlStyle = UISegmentedControlStyleBar;
simpleButton.momentary = YES;
simpleButton.tintColor = [UIColor blueColor];
NSLog(@"%@ - %@ - titleTextAttributesForState: %@", INTERFACENAME, NSStringFromSelector(_cmd) , [simpleButton titleTextAttributesForState:UIControlStateNormal]);
[simpleButton setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont boldSystemFontOfSize:12.0f], UITextAttributeFont,
nil]
forState:UIControlStateNormal];
NSLog(@"%@ - %@ - titleTextAttributesForState: %@", INTERFACENAME, NSStringFromSelector(_cmd) , [simpleButton titleTextAttributesForState:UIControlStateNormal]);
Хотя, как вы можете видеть из вывода NSLog, это не так.
2011-11-03 17:28:45.492 io[80933:11903] IoUISESimpleButton - createElement - titleTextAttributesForState: (null)
2011-11-03 17:28:49.368 io[80933:11903] IoUISESimpleButton - createElement - titleTextAttributesForState: {
Font = "<UICFFont: 0x99c2040> font-family: \"Helvetica\"; font-weight: bold; font-style: normal; font-size: 12px";}
Я что-то упустил? Также он не кодирует атрибуты.
у меня в моем - (void) encodeWithCoder:(NSCoder *)encoder
[encoder encodeObject:simpleButton forKey:@"simpleButton" ];
тогда по моему -(id) initWithCoder:(NSCoder *)decoder
simpleButton = [decoder decodeObjectForKey:@"simpleButton"];
Это не сохраняет setTitleTextAttributes: forState:
, который я установил. (изменить шрифт, размер и цвет)
В итоге мне нужно добавить:
[encoder encodeObject:[simpleButton titleTextAttributesForState:UIControlStateNormal] forKey:@"simpleButtonTitleTextAttributes" ];
и
[simpleButton setTitleTextAttributes:[decoder decodeObjectForKey:@"simpleButtonTitleTextAttributes"] forState:UIControlStateNormal];
для сохраняемых атрибутов текста.
Спасибо