如何从导航栏上的按钮删除光泽/闪耀效果? 如果我通过使用自定义图像自定义导航栏,按钮不受影响,我可以从中删除效果(线条和上光),或为整个按钮定义十六进制颜色代码,甚至为它们定义一个自定义图像太?从UINavigationBar中的按钮删除闪耀效果
回答
我刚刚完成了这个过程。基本上,您需要创建自定义的可拉伸图像并将其用作按钮的背景以消除光芒。替换UINavigationController中的后退按钮有点困难。为此,我使用了UINavigationControllerDelegate来用我的自定义按钮替换默认的后退按钮。
下面是一些代码:
创建的UIBarButtonItem上一个类别创建您的自定义按钮。这是我的。我使用这个类来定义包括经常栏按钮和后退按钮:
@interface UIBarButtonItem (UIBarButtonItem_customBackground) + (id) customBarButtonWithTitle:(NSString *)title target:(id)target selector:(SEL)selector; + (id) customBackButtonWithTitle:(NSString *)title target:(id)target selector:(SEL)selector; @end @implementation UIBarButtonItem (UIBarButtonItem_customBackground) + (id) customButtonWithImageNamed:(NSString *)imageName selectedImageNamed:(NSString *)selectedImageName leftCapWidth:(CGFloat)leftCapWidth edgeInsets:(UIEdgeInsets)edgeInsets title:(NSString *)title target:(id)target selector:(SEL)selector { UIButton* customButton = [UIButton buttonWithType:UIButtonTypeCustom]; [customButton addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside]; customButton.titleLabel.font = [UIFont boldSystemFontOfSize:12.0f]; customButton.titleLabel.shadowColor = [UIColor colorWithRed:0.0f/255.0f green:0.0f/255.0f blue:0.0f/255.0f alpha:0.25f]; customButton.titleLabel.shadowOffset = CGSizeMake(0.0f, -1.0f); customButton.titleLabel.lineBreakMode = UILineBreakModeTailTruncation; customButton.titleEdgeInsets = edgeInsets; UIImage* navButtonBackgroundImage = [[UIImage imageNamed:imageName] stretchableImageWithLeftCapWidth:leftCapWidth topCapHeight:0.0f]; UIImage* navButtonPressedBackgroundImage = [[UIImage imageNamed:selectedImageName] stretchableImageWithLeftCapWidth:leftCapWidth topCapHeight:0.0f]; [customButton setBackgroundImage:navButtonBackgroundImage forState:UIControlStateNormal]; [customButton setTitle:title forState:UIControlStateNormal]; [customButton setBackgroundImage:navButtonPressedBackgroundImage forState:UIControlStateHighlighted]; [customButton setBackgroundImage:navButtonPressedBackgroundImage forState:UIControlStateSelected]; CGSize size = CGSizeMake(30.0f, 30.0f); if (title != nil) { size = [[NSString stringWithString:title] sizeWithFont:customButton.titleLabel.font]; } customButton.frame = CGRectMake(0.0f, 0.0f, size.width + 20.0f, 30.0f); customButton.layer.shouldRasterize = YES; customButton.layer.rasterizationScale = [[UIScreen mainScreen] scale]; return [[[UIBarButtonItem alloc] initWithCustomView:customButton] autorelease]; } + (id) customBarButtonWithTitle:(NSString *)title target:(id)target selector:(SEL)selector { return [self customButtonWithImageNamed:@"navButtonBG.png" selectedImageNamed:@"navButtonPressedBG.png" leftCapWidth:6.0f edgeInsets:UIEdgeInsetsMake(0.0f, 5.0f, 0.0f, 5.0f) title:title target:target selector:selector]; } + (id) customBackButtonWithTitle:(NSString *)title target:(id)target selector:(SEL)selector { return [self customButtonWithImageNamed:@"backButtonBG.png" selectedImageNamed:@"backButtonPressedBG.png" leftCapWidth:12.0f edgeInsets:UIEdgeInsetsMake(0.0f, 11.0f, 0.0f, 5.0f) title:title target:target selector:selector]; } @end
添加按钮,您的UINavigationBar的
UIBarButtonItem* logoutButton = [UIBarButtonItem customBarButtonWithTitle:@"Logout" target:self selector:@selector(logout)]; self.navigationItem.rightBarButtonItem = logoutButton;
如果你也想更换的UINavigationController的后退按钮,设置一个UINavigationControllerDelegate并执行willShowViewController方法,如下所示:
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { if([navigationController.viewControllers count ] > 1) { UIViewController* backViewController = [navigationController.viewControllers objectAtIndex:(navigationController.viewControllers.count - 2)]; NSString* backText = backViewController.title; UIBarButtonItem* newBackButton = [UIBarButtonItem customBackButtonWithTitle:backText target:navigationController selector:@selector(popViewControllerAnimated:)]; viewController.navigationItem.leftBarButtonItem = newBackButton; viewController.navigationItem.hidesBackButton = YES; } }
这里是拉伸hable图片我使用:
- 后退按钮:追问:
- 常规按钮:追问:
你。是。所以。 FEAKING。真棒!!!!!我喜欢你! – Eugene
@Justin Gallagher 贾斯汀谢谢你谢谢你谢谢你! –
如何将此代码添加到项目中以使用它? –
你必须使用图像没有任何光泽效果的自定义按钮,通过它你可以摆脱导航栏中按钮的黄金效果。
为了改变后退按钮没有必要实施委托方法uinavigationcontroller。
您只需在设置完所需的后退按钮后将hidesBAckButton属性设置为YES,就像@Justin Gallacher完美解释的那样。
self.navigationItem.leftBarButtonItem = [UIBarButtonItem customBackButtonWithTitle:@"Back" target:self.navigationController selector:@selector(popViewControllerAnimated:)];
self.navigationItem.hidesBackButton = YES;
这甚至不是必需的,设置leftBarButtonItem属性将覆盖后退按钮 – Daniel
- 1. 如何从按钮中删除效果?
- 2. 如何获得UIButtonTypeInfoLight的闪耀效果?
- 3. 闪光或闪光效果的按钮
- 4. 引导删除按钮,点击效果
- 5. 使用Flex Builder删除图标中的“闪耀”
- 6. 我无法删除Internet Explorer 9中按钮的按下效果。
- 7. 从视图中删除UINavigationBar
- 8. 从UIScrollView中删除按钮
- 9. 如何从CSS按钮动画中删除闪烁?
- 10. 模拟在悬停事件上执行的按钮上的闪耀效果,但与其他事件
- 11. 如何删除按下按钮(推入)效果
- 12. 如何删除菜单项(WPF)的“按钮”效果
- 13. OpenGL聚光灯从后面闪耀
- 14. 从插件删除按钮
- 15. 当我按下按钮时从MySQL表中删除行删除
- 16. 如何从UIViewController中删除UINavigationBar?
- 17. 按下按钮的效果
- 18. 删除UINavigationBar后退按钮额外填充?
- 19. 内存警告消除UINavigationBar按钮
- 20. 从文本框中删除timepicker效果
- 21. 我如何从图中删除效果
- 22. 从ListViewItem中删除放大效果
- 23. 删除Material Design Lite按钮悬停效果
- 24. 删除onclick效果后点击另一个img /按钮
- 25. 如何删除引导按钮悬停效果?
- 26. UITable视图,完成按钮,删除效果
- 27. UINavigationBar按钮颜色
- 28. 删除按钮
- 29. jquery闪耀的效果,动画没有悬停作为触发器
- 30. 如何从布局中删除按钮?
@Rudy - 如果您认为该问题与其他问题重复,请投票结束,而不是编辑问题的正文。 –
这是[iOS:如何用一种颜色替换搜索栏背景闪耀/发光]的可能副本(http://stackoverflow.com/questions/6696200/ios-how-to-replace-search-bar-background-闪耀着单色) –