将视图拆分为 2 个视图,用于 iOS 的 google cardboard

Posted

技术标签:

【中文标题】将视图拆分为 2 个视图,用于 iOS 的 google cardboard【英文标题】:Split view into 2 views for google cardboard for iOS 【发布时间】:2016-03-22 18:09:38 【问题描述】:

我正在使用 https://bitbucket.org/javieralonso/japanoview 为 ios 应用创建 360 度全景视图。我现在要做的是将视图拆分为 2 个相同的视图,并为它们两个使用一个输入,并且能够在 google cardboard 中使用它。请帮忙。谢谢。

【问题讨论】:

【参考方案1】:

我曾经以此为灵感来做同样的事情。 https://github.com/nicklockwood/ReflectionView 将反射设置为动态。视图是镜像的,但您可以通过删除小于零的值来修复。 还要翻译方法以使其彼此相邻。删除渐变绘图,您就可以开始了:)

【讨论】:

首先感谢您与我分享该代码。我已经能够创建我正在寻找的粗略版本。我感到困惑的是,当您说“视图是镜像的,但是如果您可以通过删除小于零的值来修复。还可以转换方法以使其彼此相邻。删除渐变绘图,您就可以开始了”。您具体指的是哪些变量和方法?【参考方案2】:

在情节提要中添加要在屏幕左半部分复制的视图,并将其 Class 设置为 ReflectionView。 反射视图实现更改将如下所示:

- (void)update 
    //update instances
    CAReplicatorLayer *layer = (CAReplicatorLayer *)self.layer;
    layer.shouldRasterize = YES;
    layer.rasterizationScale = [UIScreen mainScreen].scale;
    layer.instanceCount = 2;
    CATransform3D transform = CATransform3DIdentity;
    transform = CATransform3DTranslate(transform, layer.bounds.size.width + _reflectionGap, 0.0f, 0.0f);
    transform = CATransform3DScale(transform, 1.0f, 1.0f, 0.0f);
    layer.instanceTransform = transform;
    layer.instanceAlphaOffset = 1.0f;


- (void)setUp 
    //set default properties
    _reflectionGap = 0.0f;
    _dynamic = YES;
    //update reflection
    [self setNeedsLayout];

【讨论】:

我使用了您的代码,但只显示了 1 个视图,并且未显示反射视图。我正在尝试并排显示 2 个视图。 禁用该视图上的剪辑子视图 我做了,但它仍然没有显示。我不知道要更改哪个值。我已经尝试过更改 translate 和 transform 方法的值,但我仍然无法得到我想要的。 我发送的代码已经过测试,不需要更改翻译方法。尝试在里面放一些subview,看看能不能正确显示。 终于成功了!我的错误是我没有使用您所做的确切更新方法。感谢您的帮助!

以上是关于将视图拆分为 2 个视图,用于 iOS 的 google cardboard的主要内容,如果未能解决你的问题,请参考以下文章

简单视图拆分视图ios编程

如何将布局拆分为 3 个不同的滑动视图

动态设置拆分视图控制器为根视图控制器IOS

iOS、iPad - 具有相同主视图控制器和详细视图控制器的多个拆分视图控制器

在一个页面上将一个视图模型拆分为多个表单

如何在拆分视图iOS中将不同的视图加载到详细视图