gpt4 book ai didi

ios - 无法更改自定义 UIBarButton 项目

转载 作者:行者123 更新时间:2023-11-29 00:07:01 26 4
gpt4 key购买 nike

我正在尝试向我的项目添加自定义栏按钮,但遇到了一些问题。首先让我们回顾一下我的按钮的要求,它需要:

- to display a custom font
- to be enabled/disabled
- to have its colour animated based to provide user feedback.

所以我首先尝试通过 Storyboard连接一个 barButtonItem ,我可以更改颜色并启用禁用它。但是我无法更改字体或为其添加彩色动画。我希望能够使用我已经在应用程序中使用的以下方法来设置颜色动画:

- (void)textFlashTextfieldAnimation:(nonnull UITextField *)view duration:(NSTimeInterval)duration animateToColour:(UIColor*)animationColour textColor:(UIColor*)textColour completion:(void (^)(BOOL finished))completion {
[UIView transitionWithView:view duration:0 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
view.textColor = animationColour;
} completion:^(BOOL finished) {
[UIView transitionWithView:view duration:2.0f options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
view.textColor = textColour;
} completion:completion];
}];
}

理想情况下,我可以更改此函数以接受 barButtonItem/UIButton,这样我就可以轻松地为其设置动画。但是,如果我通过 Storyboard连接按钮,我将无法访问按钮的层,因此无法制作动画。

我已经开始通过代码来解决这个问题,但我已经进入了 2 个死胡同。下面是一个 barButtonItem 的基本实现:

UIBarButtonItem *myButton=[[UIBarButtonItem alloc] initWithTitle:@"My Custom Button" style:UIBarButtonItemStylePlain target:self action:@selector(/*do something*/)];
[self.navigationItem setRightBarButtonItem:myButton];

现在这将起作用,因为我可以像 Storyboard按钮一样使用它,但是我不能更改字体或访问按钮的层,所以它也不好。

然后我尝试通过创建一个 UIView 和一个 UIButton 然后将它们添加到 barButtonItem 来为我的栏按钮创建一个完全自定义的 View ,这可以在这里看到:

UIFont *barButtonFonts = [UIFont fontWithName:kFont size:16];

//Right Button
//create view
UIView *rightButtonView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 45, 25)];

//create button
UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeSystem];
rightButton.backgroundColor = [UIColor clearColor];
rightButton.frame = rightButtonView.frame; //set frame = to view
[rightButton setTitle:NSLocalizedString(@"Save", nil) forState:UIControlStateNormal];
rightButton.titleLabel.font = barButtonFonts;

rightButton.tintColor = [UIColor redColor];

[rightButton addTarget:self action:@selector(actionMethod) forControlEvents:UIControlEventTouchUpInside];

[rightButtonView addSubview:rightButton];

UIBarButtonItem *rightBarButton = [[UIBarButtonItem alloc] initWithCustomView:rightButtonView];

self.navigationItem.rightBarButtonItem = rightBarButton;

现在我有一个 barButtonItem 将显示自定义字体,但它根本没有 UI 交互。它在启用/禁用和未突出显示/突出显示时看起来是一样的。该按钮正常工作,但看起来不正常。

我是否应该在我的代码中的某处为该按钮创建一个导出,以便我可以在 View 中更改该按钮?是否可以在将按钮添加到导航栏后对其进行更改?

如果有人有任何建议,我们将不胜感激!

最佳答案

是的,将 barbuttonitem 添加到栏后不可修改。我能想到的唯一方法是在用户与之交互时删除按钮并添加一个新按钮(具有新特性)。我建议您使用自定义工具栏(如普通 UIView),然后向其添加一个普通按钮。定制起来会更容易

关于ios - 无法更改自定义 UIBarButton 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47718223/

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