具有透明背景的 ViewController 通过推送转换进入当前 ViewController
Posted
技术标签:
【中文标题】具有透明背景的 ViewController 通过推送转换进入当前 ViewController【英文标题】:ViewController With Transparent Background Entering Current ViewController With Push Transition 【发布时间】:2013-09-11 04:30:22 【问题描述】:我有这个故事板:
我的第一个 ViewController 以编程方式将 PNG 图像作为背景:
- (void)viewDidLoad
[super viewDidLoad];
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bgleft"]];
我的第二个 ViewController 通过在 Storyboard 上选择 Clear Color 作为 Background 属性具有透明背景。
但是当它在我的 iPod 上运行时,我的第二个 ViewController 似乎具有相同的背景,但将第一个 ViewController 背景从右向左推。
我想做的是:
当 Segue 检测到时,它会将第一个 ViewController 上的所有 UI 组件从当前位置移动到左侧,所以感觉就像它全部被第二个 ViewController 推送(但不是背景,我想保持背景在它的位置)。
然后,第二个 ViewController 上的所有 UI 组件使用我已经在 Storyboard 上设置为透明 ViewController 的 Push Transition 进入。
因此,它可以在不移动背景的情况下从一个 ViewController 平滑过渡到另一个 ViewController。
我尝试使用此代码:
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
if ([segue.identifier isEqualToString:@"goToViewTwo"])
UIViewController *view2 = segue.destinationViewController;
view2.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bgleft"]];
但我不知道如何移动/动画所有 UI 组件(按钮、标签等)以按照我描述的方式执行。请告诉我该怎么做..谢谢。
【问题讨论】:
【参考方案1】:我认为您可以通过使两个控制器都具有透明背景并改为将背景图像添加到窗口来做到这一点。
【讨论】:
这是您能想到的最佳解决方案..很容易实现。 @RobertHanson,只需像为控制器所做的那样为窗口添加背景颜色,并在 IB 中为两个控制器提供透明视图。如果您从视图控制器执行此操作,则可以使用 self.view.window.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bgleft"]] 或 self.window.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@ "bgleft"]] 如果您在应用程序委托中执行此操作。【参考方案2】:在第二个 viewController 中粘贴这个源
self.view.backgroundColor = [UIColor clearColor];
self.modalPresentationStyle = UIModalPresentationCurrentContext;
self.modalPresentationStyle = UIModalPresentationFormSheet;
【讨论】:
以上是关于具有透明背景的 ViewController 通过推送转换进入当前 ViewController的主要内容,如果未能解决你的问题,请参考以下文章
在具有透明背景的 Alert ViewController 中心添加图像
如何将 ViewController 呈现为具有透明背景的弹出式 VC?
UINavigationController 具有跨所有 ViewController 的统一背景