首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIMotionEffect失效的视差效应

UIMotionEffect失效的视差效应
EN

Stack Overflow用户
提问于 2020-05-21 04:18:57
回答 1查看 682关注 0票数 2

我对UIView的视差效应根本不起作用。我需要像一个移动的背景图像在iPhone倾斜(伪3D)。

代码语言:javascript
复制
let horizontalMotionEffect = UIInterpolatingMotionEffect(keyPath: "center.x", type: .TiltAlongHorizontalAxis)
horizontalMotionEffect.minimumRelativeValue = -50
horizontalMotionEffect.maximumRelativeValue = 50

let verticalMotionEffect = UIInterpolatingMotionEffect(keyPath: "center.y", type: .TiltAlongVerticalAxis)
verticalMotionEffect.minimumRelativeValue = -50
verticalMotionEffect.maximumRelativeValue = 50

let motionEffectGroup = UIMotionEffectGroup()
motionEffectGroup.motionEffects = [horizontalMotionEffect, verticalMotionEffect]

imageView.addMotionEffect(motionEffectGroup)

我试过用这段代码。我读过https://www.hackingwithswift.com/example-code/uikit/how-to-create-a-parallax-effect-in-uikit,但是我的imageView仍然是静态的。

我使用的是Xcode 11,iOS 13。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-22 05:59:06

在您共享的代码中,我注意到的一件事是,您在枚举T.TiltAlongVerticalAxis中使用了大写的->,它们不编译(至少在Xcode 11.4.1上)需要将其修改为小写T的->。

苹果为这些企业提供的文档是这里

除此之外,我不认为您共享的代码有任何问题。实际上,我在视图中创建了一个带有简单imageView的示例项目,在其中添加了约束,这样它就填满了它的superview的整个空间。

然后我添加了您共享的运动效果代码,并在一个实际的设备(iPad Pro)上运行它。效果很好。

你能检查一些可能是问题根源的东西吗?

  • 再次检查Settings > Accessibility > Motion > Reduce Motion是否打开。因为如果打开它,那么UIInterpolatingMotionEffect就不能工作了。
  • 测试您正在测试的设备的加速度计是否实际工作。或者更好的是,使用另一个设备来测试它。(这在模拟器上行不通)。
  • 如果您在任何地方(尤其是在imageView /viewDidLayout中)编辑该代码的框架,则不应该这样做。

在任何情况下,如果这些东西都没有帮助您解决问题,您能否创建一个简单的示例项目来演示该bug并将其发布到Github上?如果我真的能重现这个问题的话,我可以试着帮忙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61927204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档