gpt4 book ai didi

iphone - 将 subview 添加到 UINavigationBar 并将其删除

转载 作者:行者123 更新时间:2023-11-29 03:35:05 27 4
gpt4 key购买 nike

我正在尝试创建 UINavigationBar 的自定义外观。当用户将应用程序横向放置时,导航栏应该被图像覆盖。当旋转回纵向时,我希望删除 View (图像)。除了删除它之外,下面的代码一切正常。如果我将代码放在同一个 if 语句中,我可以删除 View ,但如果将它放在 else if 语句中,则不会发生任何情况。我错过了什么吗?/问候

- (void) adjustViewsForOrientation:(UIInterfaceOrientation) orientation {

UIView *v = [[UIView alloc]init];

if (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight)
{

v.frame = CGRectMake(0,0,480,44);
v.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"navbar25g.png"]];
[self.view addSubview:v];
//[v removeFromSuperview]; <----- works if I put it here

NSLog(@"LANDSCAPE");//load the landscape view

}
else if (orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown)
{
[v removeFromSuperview]; <----- Not working


NSLog(@"PORTRAIT"); //load the portrait view

}

}

最佳答案

您无法删除它的原因是每次进入该方法时都会创建 UIView *v 的新实例。

创建一个实例变量,然后将 View 分配给它。分配后,您可以根据需要删除或添加。

如果你不想使用实例变量,那么你可以给 View 一个标签,即

UIView *v = nil;

v = [self.view viewForTag:1000];

if (!v) {
v = [[UIView alloc] init];
v.tag = 1000;
v.frame = CGRectMake(0, 0, 480, 44);
v.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"navbar25g.png"]];
}

现在您可以为其添加和删除。

关于iphone - 将 subview 添加到 UINavigationBar 并将其删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19279923/

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