在iOS6的自定义权限栏按钮项目不透明(custom right bar button item i

2019-08-17 00:17发布

我创建一个自定义权限栏按钮项目使用下面的代码我的导航栏:

// 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];

没有帮助,

请帮我摆脱这种背景

在此先感谢,阿米特

Answer 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含矩形表现为一个透明的对象应该。



文章来源: custom right bar button item in ios6 is not transparent