我正在尝试创建一个自定义UIBarbuttonItem,它只使用一个透明度的png,这样我只有一个图标作为按钮.当我尝试设置按钮图像时,将背景设置为白色,并将样式设置为“平原”,我仍然会在其周围获得内部阴影和黑色边框.
是什么赋予了?
我尝试了下面的代码,它仍然围绕它的黑色边框.
UIImage *background = [UIImage imageNamed:@"Dismiss_normal.png"]; UIImage *backgroundSelected = [UIImage imageNamed:@"Dismiss_selected.png"]; self.closeButton = [UIButton buttonWithType:UIButtonTypeCustom]; [self.closeButton addTarget:self action:@selector(closeButtonPressed:) forControlEvents:UIControlEventTouchUpInside]; //adding action [self.closeButton setBackgroundImage:background forState:UIControlStateNormal]; [self.closeButton setBackgroundImage:backgroundSelected forState:UIControlStateSelected]; self.closeButton.frame = CGRectMake(0,background.size.width,background.size.height); self.closeButtonItem = [[UIBarButtonItem alloc] initWithCustomView:self.closeButton]; self.navigationItem.leftBarButtonItem = self.closeButtonItem;
我注意到的是,如果我做一个模态segue按钮,上面的代码仍然有一个黑色边框,但如果我做推送segue它不? WTF?
解决方法
我理解你的问题.
实际推送UIViewController时,它将成为现有UINavigationController的一部分.因此UINavigationBar保留.但是当你使用ModalViewController时,它只是另一种“添加”到现有UIViewController的UIViewController.所以UINavigationBar不会存在.
但是你可以从xib添加另一个UINavigationBar并添加一个UIButton.但是不要直接添加UIButton,如果这样做,它会自动转换为UIBarButton,使其边界化.
所以首先将普通的UIButton拖到你的UIView(不是导航栏).将其更改为自定义并使用Attribute Inspector将UIImage添加到其中.然后将该图像拖到自定义创建的UINavigationBar中.它会像我刚才尝试的那样工作.您可以看到下面附带的屏幕截图.