ios – 自定义UIBarButtonItem

我正在尝试创建一个自定义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中.它会像我刚才尝试的那样工作.您可以看到下面附带的屏幕截图.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...