Iphone sendSubviewToBack和insertSubview:belowSubview:don';I don’我不能像他们应该做的那样工作

Iphone sendSubviewToBack和insertSubview:belowSubview:don';I don’我不能像他们应该做的那样工作,iphone,objective-c,ios,cocoa-touch,Iphone,Objective C,Ios,Cocoa Touch,我对sendSubviewToBack和insertSubview:belowSubview:方法有问题。简单地说,我在另一个视图下插入了一个按钮\u centerView。我希望按钮保持在\u中心视图下方 我面临的问题是,当我在\u centerView下面插入一个按钮时,我看到\u centerView上有一个闪烁(只是短暂的一瞬间)。我尝试了sendSubviewToBack:和insertSubview:belowSubview:-效果相同 你知道什么地方出了问题吗?我错过什么了吗?这是

我对
sendSubviewToBack
insertSubview:belowSubview:
方法有问题。简单地说,我在另一个视图下插入了一个按钮
\u centerView
。我希望按钮保持在
\u中心视图
下方

我面临的问题是,当我在
\u centerView
下面插入一个按钮时,我看到
\u centerView
上有一个闪烁(只是短暂的一瞬间)。我尝试了
sendSubviewToBack:
insertSubview:belowSubview:
-效果相同

你知道什么地方出了问题吗?我错过什么了吗?这是我的密码:

    UIButton* itemButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [itemButton setFrame:CGRectMake(0, 0, 40, 40)];
    [itemButton setCenter:_centerView.center];

    [parentView bringSubviewToFront:_centerView];
    [parentView insertSubview:itemButton belowSubview:_centerView];

我不确定
insertSubview
背后的内部结构是什么,但如果您想消除闪烁,最简单的方法是在插入视图之前隐藏视图,然后再次显示

[itemButton setHidden:YES];
[parentView insertSubview:itemButton belowSubview:_centerView];
[itemButton setHidden:NO];

这不是最优雅的解决方案,但它应该可以完成任务。

好的,所以过了一会儿,我发现这是我在添加按钮的同时设置动画的窗口的错误。我不知道为什么,但是窗口的淡入动画导致了这个问题。我切换了我的UIWindow的动画,现在它可以工作了。谢谢你的帮助

我最近遇到了同样的问题,但将此选项传递给动画代码修复了它。希望这对你也有帮助。如果没有你的评论,我不会想出我的解决方案,所以谢谢你:)


…当您删除
时会发生什么?@skram nothing,没有区别。嗯。如果取出
[itemButton setHidden:否]行,是否仍闪烁?如果没有,您可能需要将其隐藏起来,直到它从centerView后面出现为止。不过,我无法在我的设备上重现这个问题,所以我也不确定这是否有帮助。
UIViewAnimationOptionShowHideTransitionViews