Ошибки CGContext при использовании пользовательского фонового изображения для панели навигации - PullRequest
0 голосов
/ 03 ноября 2011

Я использую пользовательское фоновое изображение для моей панели навигации.Поэтому в моем делегате приложения я установил:

UIImage *image1 = [UIImage imageNamed:@"mh.png"];

[image1 drawInRect:CGRectMake(0, 0, 480, 320)]; 
[[UINavigationBar appearance] setBackgroundImage:image
                              forBarMetrics:UIBarMetricsDefault];

Но это дает мне кучу ошибок, таких как

Wed Nov  2 23:05:36 My-MacBook.local MessageDJ[480] <Error>: CGContextScaleCTM: invalid context 0x0
Wed Nov  2 23:05:36 My-MacBook.local MessageDJ[480] <Error>: CGContextDrawImage: invalid context 0x0
Wed Nov  2 23:05:36 My-MacBook.local MessageDJ[480] <Error>: CGContextRestoreGState: invalid context 0x0

Любая идея, почему это происходит и как это исправить?

1 Ответ

1 голос
/ 03 ноября 2011

Вам не нужен вызов метода drawInRect для установки изображения, однако для полноты картины я объясню, почему ваш код генерирует ошибки ....

UIImagedrawInRect метод - это вспомогательный метод UIKit, который заключает в себе некоторые вызовы QuartzCore для рисования изображения;он переворачивает контекст перед рисованием, поэтому изображение выглядит правильным образом, например.Проблема с вашим кодом состоит в том, что в настоящее время нет графического контекста, установленного для этих базовых вызовов, для работы с ним.

Сначала вам нужен действительный графический контекст, поэтому вам нужен один из вызовов контекста графического интерфейса пользователя ...

UIGraphicsBeginImageContext
UIGraphicsBeginPDFContextToFile
UIGraphicsBeginPDFContextToData

или , если вы в настоящее время находитесь в вызове drawRect, вы можете получить текущий контекст, используя ...

UIGraphicsGetCurrentContext
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...