我想将视图控制器推送到导航堆栈上,但我不希望它的视图最初出现 - 换句话说,我希望在视图控制器被推送时可见的视图仍然可见。
我尝试将视图控制器的视图的 alpha 值设置为 0.0,我认为这会使它变得透明。但相反,当我将视图控制器推送到堆栈上时,屏幕是白色的。如果我将 alpha 设置为 1.0,那么视图控制器的视图会按预期显示。
为什么它是白色的而不是透明的?
我想将视图控制器推送到导航堆栈上,但我不希望它的视图最初出现 - 换句话说,我希望在视图控制器被推送时可见的视图仍然可见。
我尝试将视图控制器的视图的 alpha 值设置为 0.0,我认为这会使它变得透明。但相反,当我将视图控制器推送到堆栈上时,屏幕是白色的。如果我将 alpha 设置为 1.0,那么视图控制器的视图会按预期显示。
为什么它是白色的而不是透明的?
您将不得不手动将视图添加到视图控制器而不是推送它例如执行以下操作
YourViewController *vc = [[YourViewController alloc] init];
[self.view addSubview:vc.view];
vc.view.alpha = 0.0;
//Animate Here
vc.view.alpha = 1.0;
//Commit Animate Here
请注意,您将不得不做一些额外的编码来实现 vc 的发布,因为现在您保留了 vc.view,您将无法轻松发布 vc,
另一种解决方案是将第二个视图实现为viewcontoller而不是将其实现为uiview,并且xib类将是view而不是uiviewcontroller
也许确保 opaque 属性设置为 NO?
或者您正在推动的视图可能是在界面构建器中构建的,并且您的背景颜色为白色,并且您在其上放置了另一个视图,并且您只更改了子视图的不透明度?