Пользовательский элемент правой панели кнопок в ios6 не прозрачен

Я создаю пользовательский элемент правой панели кнопок для моей панели навигации, используя следующий код:

// create a toolbar 
UIToolbar* tools = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 50, 44.01)];
// create the array to hold the button, which then gets added to the toolbar
NSMutableArray* buttons = [[NSMutableArray alloc] initWithCapacity:1];

// create a toolbar item with image
NSString* pathToSettingsResourceFile = [[NSBundle mainBundle] pathForResource:@"19-gear" ofType:@"png"];        
UIImage* settingsImage = [[[UIImage alloc] initWithContentsOfFile:pathToSettingsResourceFile] autorelease];         
settings = [[UIBarButtonItem alloc]initWithImage:settingsImage style:UIBarButtonItemStylePlain target:self action:@selector(showSettings:)];
settings.enabled = FALSE;

// add button to toolbar 
[buttons addObject:settings];
[tools setItems:buttons animated:NO];
[buttons release];

// add toolbar as a right bar button item 
self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:tools] autorelease];

[tools release];   

до ios 6 это работает как положено, с ios 6 я получаю этот странный прямоугольник

настройки кнопки правой панели

и добавление

tools.opaque = NO;
tools.backgroundColor = [UIColor clearColor];

не помогает,

пожалуйста, помогите мне избавиться от этого фона

Заранее спасибо, Амит

1 ответ

Я знаю, что это старая ветка, но у меня была та же проблема, и я подумал, что вас может заинтересовать то, что я обнаружил.

Обходной путь доступен в этой теме (ответ от jd, а не "принятый" ответ).

Вы должны быть в состоянии получить желаемое поведение с помощью этого кода:

const float colorMask[6] = {222, 255, 222, 255, 222, 255};
UIImage *img = [[UIImage alloc] init];
UIImage *maskedImage = [UIImage imageWithCGImage: CGImageCreateWithMaskingColors(img.CGImage, colorMask)];

[tools setBackgroundImage:maskedImage forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];

Хотя это работает, я не уверен, что это правильный способ сделать это, поэтому я начал новый поток здесь на случай, если кто-нибудь знает секретный код для создания UIToolbar содержащий прямоугольник ведет себя как прозрачный объект должен.

Другие вопросы по тегам