Xcode сообщает, что ключи устарели, и рекомендует поменять их на другие. Соответственно объекты тоже будут другие.
К примеру, ключ UITextAttributeTextShadowColor предлагает поменять на NSShadowAttributeName. Ну и соответственно объект UIColor просит поменять на объект NSShadow.
Вместо [UIColor grayColor] придется сначала создать NSShadow и задать для него параметры:
NSShadow *shadow = [NSShadow new];
[shadow setShadowColor: [UIColor grayColor]];
[shadow setShadowOffset: CGSizeMake(0, 0)];
Зато второй ключ UITextAttributeTextShadowOffset вообще не понадобится, потому что смещение тени уже входит в объект NSShadow. В итоге первые две строки заменятся одной:
shadow, NSShadowAttributeName
Следующие два ключа просто сменили название, а объекты остались прежними. В итоге UINavigationBar будет описан так:
NSShadow *shadow = [NSShadow new];
[shadow setShadowColor: [UIColor grayColor]];
[shadow setShadowOffset: CGSizeMake(0, 0)];
[[UINavigationBar appearance] setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
shadow, NSShadowAttributeName,
[UIColor whiteColor], NSForegroundColorAttributeName,
[UIFont fontWithName: FONT_BOLD size: 17], NSFontAttributeName,
nil]];