Почему не получается убрать ошибки при компиляции приложения под iOS7?

self.navigationController = [[NavigationController alloc] initWithRootViewController:rootController];
    [[UIToolbar appearance] setBackgroundImage:[UIImage imageWithColor:[SIMenuConfiguration selectionColor]] forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];
    
    
    [[UINavigationBar appearance] setTitleTextAttributes:
     [NSDictionary dictionaryWithObjectsAndKeys:
      [UIColor grayColor], UITextAttributeTextShadowColor,
      [NSValue valueWithUIOffset:UIOffsetMake(0, 0)], UITextAttributeTextShadowOffset,
      [UIColor whiteColor], UITextAttributeTextColor,
      [UIFont fontWithName:FONT_BOLD size:17.0], UITextAttributeFont,
      nil]];

     
    [[UIBarButtonItem appearance] setTitleTextAttributes:
     [NSDictionary dictionaryWithObjectsAndKeys:
      [UIColor grayColor], UITextAttributeTextShadowColor,
      [NSValue valueWithUIOffset:UIOffsetMake(0, 0)], UITextAttributeTextShadowOffset,
      [UIColor whiteColor], UITextAttributeTextColor,
      [UIFont fontWithName:FONT_BOLD size:10.0], UITextAttributeFont,
      nil] forState:UIControlStateNormal];


Вот такие замечательные ошибки выбивает пятый xcode: скриншот.
  • Вопрос задан
  • 2722 просмотра
Решения вопроса 1
@Mr_Kibernetik
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]];
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@iRazGAr Автор вопроса
@Mr_Kibernetik, Не до конца разобрался как правильно переписать. Как должен выглядеть вот этот код под ios7? Ошибки те же.
Заранее спасибо

title.tintColor = [UIColor clearColor];
    [title setTitleTextAttributes:
     [NSDictionary dictionaryWithObjectsAndKeys:
      [UIColor grayColor], UITextAttributeTextShadowColor,
      [NSValue valueWithUIOffset:UIOffsetMake(0, 0)], UITextAttributeTextShadowOffset,
      [UIColor whiteColor], UITextAttributeTextColor,
      [UIFont fontWithName:FONT_BOLD size:17.0], UITextAttributeFont,
      nil] forState:UIControlStateNormal];
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы