Променете цвета на текста на UILabel, когато UIAlertView се появи

При първия си изглед показвам червено заглавие в моя UINavigationBar. Използвам UILabel, за да постигна това, защото това е единственият начин, който намерих за показване на червен текст с iOS 7. Сега в зависимост от това какво избира потребителят, UIAlertView се показва над първия (който следователно се превръща във фонов изглед). Изгледът за предупреждение не покрива целия екран, така че елементите от първия (фонов) изглед все още са видими. Всички те са сиви с изключение на заглавния текст на UINavigationBar. За последователност бих искал червеното заглавие също да стане сиво, когато се покаже изгледът за предупреждение.

Някаква идея как мога да променя цвета в този момент?

Моят UILabel код:

UILabel *titleView = (UILabel *)self.navigationItem.titleView;
titleView = [[UILabel alloc] initWithFrame:CGRectZero];
titleView.backgroundColor = [UIColor clearColor];
titleView.font = [UIFont boldSystemFontOfSize:20.0];
//titleView.font = [UIFont fontWithName:@"Arial" size:20.0];
titleView.textColor = [UIColor redColor];

self.navigationItem.titleView = titleView;

self.title = @"View Title";

titleView.text = self.title;
[titleView sizeToFit];

Също така се опитах да променя цвета на заглавието на UINavigationBar, без да използвам UILabel, правейки го червен от черния цвят на произхода без успех. UILabel е моят резервен вариант. Ако обаче има начин да го накарам да работи без UILabel, уведомете ме. Прегледах всички свързани теми на този сайт без разрешение.


person Armand    schedule 11.11.2013    source източник
comment
разгледайте това решение: stackoverflow.com/a/43651395/3024579   -  person Alok    schedule 27.04.2017


Отговори (1)


[titleView setTextColor:[UIColor redColor]];

Използвайте това веднага след като покажете, че сте нащрек.

Пример:

if (somethingBecameTrue)
{
    [yourAlertView show];
    [titleView setTextColor:[UIColor redColor]];
}

За да го върнете обратно:

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
    [titleView setTextColor:[UIColor blackColor]];
}

За да проверите дали се показва или не:

if (!yourAlertView.visible) // Note the exclamation mark (!)
{
    // Alertview is not shown yet
    [yourAlertView show];
}
person Community    schedule 11.11.2013
comment
След това сега трябва да го върна към оригиналния му цвят, когато UIAlertView бъде отхвърлен. Някаква идея как да? Опитвах се безуспешно... - person Armand; 11.11.2013
comment
Благодаря! Последен въпрос: Възможно ли е да се провери състоянието на UIAlertView дали се показва или е отхвърлен. Например if (alertView) { } ? - person Armand; 11.11.2013