Ios 定制维吾尔巴布托邦
我正在尝试创建一个自定义UIBarButtonim,它只使用一个透明的png,这样我就只有一个图标作为按钮。当我尝试设置按钮图像时,将背景设置为白色,并将样式设置为普通,我仍然会在其周围获得一个内部阴影和黑色边框Ios 定制维吾尔巴布托邦,ios,objective-c,uinavigationbar,uibarbuttonitem,Ios,Objective C,Uinavigationbar,Uibarbuttonitem,我正在尝试创建一个自定义UIBarButtonim,它只使用一个透明的png,这样我就只有一个图标作为按钮。当我尝试设置按钮图像时,将背景设置为白色,并将样式设置为普通,我仍然会在其周围获得一个内部阴影和黑色边框 UIImage *background = [UIImage imageNamed:@"Dismiss_normal.png"]; UIImage *backgroundSelected = [UIImage imageNamed:@"Dismiss_selected.png"]; s
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 ,0,background.size.width, background.size.height);
self.closeButtonItem = [[UIBarButtonItem alloc] initWithCustomView:self.closeButton];
self.navigationItem.leftBarButtonItem = self.closeButtonItem;
有什么好处
我已经尝试了下面的代码,但它仍然会在它周围加上黑色边框
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 ,0,background.size.width, background.size.height);
self.closeButtonItem = [[UIBarButtonItem alloc] initWithCustomView:self.closeButton];
self.navigationItem.leftBarButtonItem = self.closeButtonItem;
我注意到的是,如果我对按钮进行模式切换,上面的代码仍然有一个黑色边框,但是如果我进行按键切换,它没有?WTF?尝试使用[UIBarButtonItem initWithCustomView]
UIImage *menuButtonImage = [UIImage imageNamed:@"list.png"];// set your image Name here
UIButton *btnToggle = [UIButton buttonWithType:UIButtonTypeCustom];
[btnToggle setImage:menuButtonImage forState:UIControlStateNormal];
btnToggle.frame = CGRectMake(0, 0, menuButtonImage.size.width, menuButtonImage.size.height);
UIBarButtonItem *menuBarButton = [[UIBarButtonItem alloc] initWithCustomView:btnToggle];
self.navigationItem.leftBarButtonItem = menuBarButton;
请尝试此代码
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
UIImage *btnImage = [UIImage imageNamed:@"bg"];
[button setImage:btnImage forState:UIControlStateNormal];
button.frame = CGRectMake(0, 0, btnImage.size.width, btnImage.size.height);
[button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
UIImage *icon = [UIImage imageNamed:@"icon"]
UIImageView *iconView = [[UIImageView alloc] initWithImage:icon];
iconView.frame = CGRectMake(0, 0, icon.size.width, icon.size.height);
[button addSubview:iconView];
iconView..userInteractionEnabled=NO;
[iconView centerBothDirections];
[iconView release];
UIBarButtonItem *barbtn = [[[UIBarButtonItem alloc] initWithCustomView:button] autorelease];
self.navigationItem.leftBarButtonItem =barbtn
必须将按钮类型设置为自定义,将图标图像设置为按钮背景。 示例代码:
UIImage *background = [UIImage imageNamed:@"icon.png"];
UIImage *backgroundSelected = [UIImage imageNamed:@"icon_selected.png"];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button addTarget:self action:@selector(checkButtonTapped:event:) forControlEvents:UIControlEventTouchUpInside]; //adding action
[button setBackgroundImage:background forState:UIControlStateNormal];
[button setBackgroundImage:backgroundSelected forState:UIControlStateSelected];
button.frame = CGRectMake(0 ,0,35,35);
然后将此按钮设置为BarButtonItem,如下所示:
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithCustomView:button];
self.navigationItem.leftBarButtonItem = barButton;
我个人喜欢这种方法,即通过UI外观将整个UI展平
基本上,您可以做如下操作:
UIImage *backButtonPortraitImage = [UIImage backButtonImageWithColor:color barMetrics:UIBarMetricsDefault cornerRadius:cornerRadius];
UIImage *highlightedBackButtonPortraitImage = [UIImage backButtonImageWithColor:highlightedColor barMetrics:UIBarMetricsDefault cornerRadius:cornerRadius];
[appearance setBackButtonBackgroundImage:backButtonPortraitImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[appearance setBackButtonBackgroundImage:highlightedBackButtonPortraitImage forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];
UIImage *buttonImageNormal = [UIImage imageWithColor:color cornerRadius:cornerRadius];
UIImage *buttonImageHightlighted = [UIImage imageWithColor:highlightedColor cornerRadius:cornerRadius];
[appearance setBackgroundImage:buttonImageNormal forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[appearance setBackgroundImage:buttonImageHightlighted forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];
这将更新整个应用程序中的所有后退按钮和导航栏。 我使用了下面的代码来设置自定义导航返回按钮
UIImage *imgBack = [[UIImage imageNamed:@"nav_back.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(-6, 22, -6, 0)];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:imgBack forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
下面的代码用于在导航栏上设置背景图像
UIImage *navBackgroundImage = [UIImage imageNamed:@"nav_bar.png"];
[[UINavigationBar appearance] setBackgroundImage:navBackgroundImage forBarMetrics:UIBarMetricsDefault];
我理解你的问题 当您实际推送一个
UIViewController
时,它将是现有UINavigationController
的一部分。因此,UINavigationBar
将保留。但是当您使用ModalViewController
时,它只是另一个UIViewController
类型的“添加”到现有的UIViewController
。因此,UINavigationBar
将不在那里
但是您可以从xib
添加另一个UINavigationBar
,并添加一个UIButton
。但是不要直接添加ui按钮
,如果这样做,它将自动转换为ui按钮
,使其具有边框
因此,首先将一个普通的ui按钮
拖动到ui视图
(而不是导航栏)。将其更改为自定义,并使用属性检查器向其添加UIImage
。然后将该图像拖动到自定义创建的UINavigationBar
。它会像我刚才尝试的那样工作。您可以看到下面附带的屏幕截图
值得解释的是,这将更新整个应用程序中的所有后退按钮和导航栏-可能是最佳答案。将UINavigationController分类,并修改其中的导航栏,并将该子类用作您的主要导航工具,实际上,您甚至无法从视图控制器访问导航栏,该视图控制器是使用模态方式显示的。所以你必须添加你自己的UINavigationBar(自定义)。。。这种类型的按钮操作在@property(弱,非原子)IBUIBarButtonim*sidebarButton不起作用;给出出口动作,但按钮动作不起作用如果要确保用户触摸按钮没有问题,则应分配一个新的UIView,其中包含您希望能够触摸的边界,然后将按钮添加到此视图,然后使用新分配的视图启动按钮