iOS   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了iphone – 从UINavigationBar中的按钮中删除闪光效果大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_262_3@概述 如何从导航栏上的按钮中删除光泽/光泽效果? 如果我通过使用自定义图像自定义导航栏,按钮不受影响,我可以从中删除效果(线条和光泽),还是为整个按钮定义十六进制颜色代码,甚至为其定义一个自定义图像? 我刚刚经历了这个过程.基本上,您需要创建自定义的可拉伸图像,并将其用作按钮的背景来摆脱光泽.更换UINavigationController中的后退按钮有点困难.为此,我使用UINavigationCon
如何从导航栏上的按钮中删除光泽/光泽效果
如果我通过使自定义图像自定义导航栏,按钮不受影响,我可以从中删除效果(线条和光泽),还是为整个按钮定义十六进制颜色代码,甚至为其定义一个自定义图像?

解决方法

我刚刚经历了这个过程.基本上,您需要创建自定义的可拉伸图像,并将其用作按钮的背景来摆脱光泽.更换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@R_191_6964@ 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@R_191_6964@] 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,5.0f) 
                              title@R_191_6964@ 
                             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,5.0f) 
                              title@R_191_6964@ 
                             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;
    }
}

>以下是我使用的可伸缩图像:

>返回按钮:按下:>常规按钮:按下:

大佬总结

以上是大佬教程为你收集整理的iphone – 从UINavigationBar中的按钮中删除闪光效果全部内容,希望文章能够帮你解决iphone – 从UINavigationBar中的按钮中删除闪光效果所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。