首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有自定义属性的UIMotionEffect

具有自定义属性的UIMotionEffect
EN

Stack Overflow用户
提问于 2014-05-18 17:55:26
回答 1查看 503关注 0票数 2

我正在尝试将UIMotionEffect应用于GLKView子类上的自定义属性。这是我在视图设置上的代码:

代码语言:javascript
复制
UIInterpolatingMotionEffect *horizontalMotionEffect = [[UIInterpolatingMotionEffect alloc] initWithKeyPath:@"customCenter.x" type:UIInterpolatingMotionEffectTypeTiltAlongHorizontalAxis];    
horizontalMotionEffect.minimumRelativeValue = @(-50);
horizontalMotionEffect.maximumRelativeValue = @(50);
[self addMotionEffect:horizontalMotionEffect];

该属性定义为:

代码语言:javascript
复制
@property (nonatomic) CGPoint customCenter;

但是当我在动画循环中记录该属性时,它的al值为0。我遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2016-08-19 00:14:05

我一直在寻找这个问题的答案,并自己找到了解决方案。

我想让SCNNode具有动画效果,但对于任何其他自定义对象来说,这应该很容易完成。

我创建了UIMotionEffect的子类并覆盖了keyPathsAndRelativeValuesForViewerOffset(viewerOffset: UIOffset) -> [String : AnyObject]?。我的子类是用SCNNode初始化的,这样它就可以在倾斜手机时修改它的属性。这样就可以为不可设置动画的属性设置动画。

下面是我的快速代码:

代码语言:javascript
复制
class SCNNodeTiltMotionEffect: UIMotionEffect {

    var node: SCNNode? // The object you want to tilt
    var baseOrientation = SCNVector3Zero
    var verticalAngle = CGFloat(M_PI) / 4
    var horizontalAngle = CGFloat(M_PI) / 4

    init(node: SCNNode) {
        super.init()
        self.node = node // Set value at init
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    override func keyPathsAndRelativeValuesForViewerOffset(viewerOffset: UIOffset) -> [String : AnyObject]? {
        // Set any properties of your object with values of viewerOffset attributes
        node?.eulerAngles = SCNVector3Make(baseOrientation.x, baseOrientation.y + Float(viewerOffset.horizontal * horizontalAngle), baseOrientation.z - Float(viewerOffset.vertical * verticalAngle))
        return nil
    }
}

如果要对可设置动画的属性进行动画处理,则应返回一个包含密钥路径和值的字典,或者在the official documentation中使用UIInterpolatingMotionEffect,了解更多详细信息

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

https://stackoverflow.com/questions/23720699

复制
相关文章

相似问题

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