gpt4 book ai didi

iphone - 具有自定义 View 的 UIBarButtonItem 在第一次查看后不显示

转载 作者:可可西里 更新时间:2023-11-01 03:34:01 26 4
gpt4 key购买 nike

好吧,这很奇怪。一个小时以来,我一直在努力调试它。

我创建了一个带有自定义 View 的 UIBarButtonItem,它是一个分配有图像的 UIButton。代码如下

UIButton *btnAdd = [[[UIButton alloc] initWithFrame:CGRectMake(0, 0, 28, 28)] autorelease];

[btnAdd setImage:[UIImage imageNamed:@"btn_add"] forState:UIControlStateNormal];

[btnAdd addTarget:self
action:@selector(addBox)
forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *add = [[UIBarButtonItem alloc] initWithCustomView:btnAdd];

self.navigationItem.rightBarButtonItem = add;

它位于我的 - (id)initWithNibName: 扩展 UIViewController 方法中

在 UIViewController 的第一次出现时,按钮显示正常,并且工作正常。但是,如果我按下另一个 View Controller ,然后返回,按钮是不可见的。

即使它不可见,按钮仍然有效。我可以点击它,它表现正常。我确实知道它是原来的 UIButton,因为我已经跟踪了它的内存地址和其他属性……它的隐藏属性是 FALSE,它的 alpha 属性设置为 1.00f

起初我认为这可能是深度问题,但我有代码将我的自定义 UINavigationBar 背景推到每个帧循环的后面,没有任何变化。查看更新

这几乎就像图像正在释放或幕后的东西,但指针也很好......

我猜这是一些奇怪的绘画怪癖,我只需要胡闹一下,但这是一个很难用谷歌搜索的问题。

如有任何提示,我们将不胜感激。

更新

事实证明这是一个深度问题。我在 drawRect: 上绘制自定义背景,并且该代码确实将自定义背景推送到 View 堆栈的后面,但是,此方法仅由私有(private)框架方法调用一次...因此当栏重绘后第一个 View ,背景并没有被强制返回,并且出于一些愚蠢的原因,它决定重绘它后面的按钮。

所以现在我想弄清楚如何在每次渲染 UINavigationBar 时强制背景被推回。

最佳答案

像这样尝试它的工作对我来说很好

    UIImage *image = [UIImage imageNamed:@"btn_set-as-fea.png"];
UIImage *hilghtedImage=[UIImage imageNamed:@"btn_set-as-fea_h.png"];
CGRect frame = CGRectMake(0, 0, image.size.width, image.size.height);

UIButton* someButton = [[UIButton alloc] initWithFrame:frame];
[someButton addTarget:self action:@selector(SetAsFeatured) forControlEvents:UIControlEventTouchUpInside];
[someButton setBackgroundImage:image forState:UIControlStateNormal];
[someButton setBackgroundImage:hilghtedImage forState:UIControlStateHighlighted];
[someButton setShowsTouchWhenHighlighted:YES];
setAsFeatured = [[UIBarButtonItem alloc] initWithCustomView:someButton];

关于iphone - 具有自定义 View 的 UIBarButtonItem 在第一次查看后不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7265952/

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