Цвет заголовка Uibutton не изменится на выделенных/выбранных, но цвет фона будетIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Цвет заголовка Uibutton не изменится на выделенных/выбранных, но цвет фона будет

Сообщение Anonymous »

Это был очень нечетный процесс. Я пробегаю коллекцию и создаю их как эта (DisplayHourButtons вызывается из ViewWillAppear ):

Код: Выделить всё

- (void)displayHourButtons
{
// Counter
NSUInteger b = 0;

// Set attributes
UIFont *btnFont = [UIFont fontWithName:@"Metric-Semibold" size:13.0];
UIColor *btnTextColor = [UIColor colorWithRed:(147/255.0f) green:(147/255.0f) blue:(147/255.0f) alpha:1.0];
NSNumber *btnTracking = [NSNumber numberWithFloat:0.25];
NSMutableParagraphStyle *btnStyle = [[NSMutableParagraphStyle alloc] init];
[btnStyle setLineSpacing:2.0];

NSDictionary *btnAttrs = [NSDictionary dictionaryWithObjectsAndKeys:
btnFont, NSFontAttributeName,
btnTextColor, NSForegroundColorAttributeName,
btnTracking, NSKernAttributeName, nil];

// CREATE THE BUTTONS
for (UIButton *hourButton in hourButtons) {
// I'm using the attributed string for something else
// later in development that I haven't got to yet.
// I simplified the string for this example's sake.
NSString *btnTitleText = [NSString stringWithFormat:@"Button %lu", (unsigned long)b];

NSMutableAttributedString *attributedText = [[NSMutableAttributedString alloc]
initWithString:btnTitleText
attributes:btnAttrs];

[attributedText addAttribute:NSParagraphStyleAttributeName
value:btnStyle
range:NSMakeRange(0, btnTitleText.length)];

CALayer *btnLayer = [hourButton layer];
[btnLayer setMasksToBounds:YES];
[btnLayer setCornerRadius:19.0f];
[hourButton setTag:b];
[hourButton setContentEdgeInsets:UIEdgeInsetsMake(5.0, 1.0, 0.0, 0.0)];
[hourButton setAttributedTitle:attributedText forState:UIControlStateNormal];
[hourButton setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];
[hourButton setContentVerticalAlignment:UIControlContentVerticalAlignmentCenter];
hourButton.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
[hourButton addTarget:self action:@selector(showHour:) forControlEvents:UIControlEventTouchUpInside];

b++;
}
}
Когда одна из кнопок нажимается, согласно действию Showhour: называется:
- (IBAction)showHour:(id)sender
{
[self.hourButtons enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
UIButton *button = (UIButton *)obj;

if (button != sender && button.enabled) {
// This is applied. I know because I tested it with redColor
[button setBackgroundColor:[UIColor clearColor]];

// Doesn't change, stays the gray set initially
[button setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
}
else {
// This is applied
[button setBackgroundColor:[UIColor colorWithRed:(169/255.0f) green:(234/255.0f) blue:(255/255.0f) alpha:1.0]];

// This is not
[button setTitleColor:[UIColor whiteColor] forState:(UIControlStateNormal | UIControlStateSelected | UIControlStateHighlighted)];
}
}];

// displayHour uses the tag to change labels, images, etc.
[self displayHour:(long int)[sender tag]];
}
< /code>
Я попробовал всевозможные сумасшедшие вещи, чтобы заставить Uiimage быть в выбранном состоянии, но ничего не сработало. Эта сделка с перечисленными объектами - единственная вещь, которая сработала. Вот почему я говорю, что это был странный процесс. Я предполагаю, что кнопки не остаются активными на неопределенный срок? Просто фон? Я подозреваю, что это как -то связано с тем, что фон не установлен изначально, но я не мог объяснить, почему.

Подробнее здесь: https://stackoverflow.com/questions/192 ... round-colo
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»