gpt4 book ai didi

objective-c - 自定义没有 uiappearance 的 uibarbuttonitem

转载 作者:行者123 更新时间:2023-11-29 11:06:29 25 4
gpt4 key购买 nike

有没有办法在不使用 UIApperance 的情况下自定义所有 uibarbuttonitems 以具有背景图像?不幸的是,我们的代码库有一些限制,我们无法使用 UIAppearance,所以我正在寻找替代方案。

提前致谢。

编辑:我可以通过子类化 UIBarButtonItem 来做到这一点,它适用于我的大多数按钮......但我想知 Prop 体如何使用默认按钮(如 UITableView 编辑按钮和 UINavigationController 后退按钮)来做到这一点。

谢谢!

最佳答案

你也可以像这样创建子类。首先,我去制作 UIBarButtonItem 的子类。我的 CustomBarButtonItem.h 应该是这样的。

@interface CustomBarButtonItem : UIBarButtonItem

+ (CustomBarButtonItem *)sharedInstance;
- (UIBarButtonItem *)backButtonwithTarget:(id)target andAction:(SEL)action;


@end

然后在我的 CustomBarButtonItem.m 中应该是这样的。

@implementation CustomBarButtonItem

static CustomBarButtonItem * _sharedInstance = nil;

+ (CustomBarButtonItem *)sharedInstance
{
if (_sharedInstance != nil)
{
return _sharedInstance;
}
_sharedInstance = [[CustomBarButtonItem alloc] init];

return _sharedInstance;
}

- (UIBarButtonItem *)backButtonwithTarget:(id)target andAction:(SEL)action
{
UIImage *backImage = [UIImage imageNamed:@"back_btn_normal.png"];
UIImage *backPressed = [UIImage imageNamed:@"back_btn_hilight.png"];
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
[backButton addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
[backButton setBackgroundImage:backImage forState:UIControlStateNormal];
[backButton setBackgroundImage:backPressed forState:UIControlStateHighlighted];

const CGFloat BarButtonOffset = 5.0f;
[backButton setFrame:CGRectMake(BarButtonOffset, 0, backImage.size.width, backImage.size.height)];

UIView *containerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, backImage.size.width, backImage.size.height)];
[containerView addSubview:backButton];

UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:containerView];
return item;
}
@end

那么无论你想在哪里制作自定义 NavigationItem(NavigationBar 中的按钮),你都可以将代码放在下面为我定制。

- (void)viewDidLoad
{
self.navigationItem.leftBarButtonItem = [[CustomBarButtonItem sharedInstance] backButtonwithTarget:self andAction:@selector(searchButtonTapped:)];
}

我的所有代码都运行良好。希望对您有所帮助。

关于objective-c - 自定义没有 uiappearance 的 uibarbuttonitem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13363106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com