- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我使用在另一个问题中找到的这个函数将视差效果应用于 View :
const static CGFloat kCustomIOS7MotionEffectExtent = 10.0;
- (void)applyMotionEffects:(UIView *)YOUR_VIEW
{
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {
return;
}
UIInterpolatingMotionEffect *horizontalEffect = [[UIInterpolatingMotionEffect alloc] initWithKeyPath:@"center.x"
type:UIInterpolatingMotionEffectTypeTiltAlongHorizontalAxis];
horizontalEffect.minimumRelativeValue = @(-kCustomIOS7MotionEffectExtent);
horizontalEffect.maximumRelativeValue = @( kCustomIOS7MotionEffectExtent);
UIInterpolatingMotionEffect *verticalEffect = [[UIInterpolatingMotionEffect alloc] initWithKeyPath:@"center.y"
type:UIInterpolatingMotionEffectTypeTiltAlongVerticalAxis];
verticalEffect.minimumRelativeValue = @(-kCustomIOS7MotionEffectExtent);
verticalEffect.maximumRelativeValue = @( kCustomIOS7MotionEffectExtent);
UIMotionEffectGroup *motionEffectGroup = [[UIMotionEffectGroup alloc] init];
motionEffectGroup.motionEffects = @[horizontalEffect, verticalEffect];
[YOUR_VIEW addMotionEffect:motionEffectGroup];
}
它工作正常,但在记录 View 的框架后我注意到它没有改变。他们是怎么做到的?有什么特别的原因吗?它使继续开发变得容易得多,但这没有意义,因为实际的 View 位置会随着视差效果的发生而改变。
最佳答案
我相信这是因为与大多数动画一样,UIInterpolatingMotionEffect
使用 View 的层
(模型层)的presentationLayer
来执行它的操作动画。这些属性通常在动画实际完成后应用到模型层(在这种情况下,完成实际上只是在运动效果结束时将其放回起始位置,因此实际模型层永远不会改变)。
尝试检查表示层的属性。
CALayer *presentationLayer = [myView.layer presentationLayer];
CGRect frame = presentationLayer.frame;
CGPoint position = presentationLayer.position;
关于ios - 为什么 UIInterpolatingMotionEffect 不改变 UIView 的框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24715330/
使用 UIInterpolatingMotionEffect,转动 iPhone,您可以移动图像。 现在:想象一个红色 block ,您将使用 UICollisionBehavior 和 UIDyna
我以这种方式将 UIInterpolatingMotionEffect 添加到 UITableViewCell 中的某些 View : UIInterpolatingMotionEffect *hor
我正在尝试用新语言 Swift 中的代码定义一个运动效果 var axis_x_motion: UIInterpolatingMotionEffect = UIInterpolatingMotionE
这里有个谜题,想象一个典型的 UIInterpolatingMotionEffect ,,, UIInterpolatingMotionEffect *horizontalMotionEffect =
我正在使用 UIInterpolatingMotionEffect 生成基于设备倾斜度的“阴影效果”。 我有一个带有一些文本的标签,并应用以下代码来获得效果: // Set shadow proper
如果没有 UIInterpolatingMotionEffect 类,我如何实现视差效果。只能用 iPhone 的加速功能吗?我想要当你倾斜手机时图像上升的效果。只是普通视差效果 我试过这个: fun
UIInterpolatingMotionEffect 旨在与 UIView 一起使用,但是否有可能在节点上的 SpriteKit 中使用它? 如果没有,是否有人有想法以另一种方式实现效果。 提前致谢
我使用在另一个问题中找到的这个函数将视差效果应用于 View : const static CGFloat kCustomIOS7MotionEffectExtent = 10.0; - (void)
我正在尝试创建一种视差效果,例如 iPhone 主屏幕,当您倾斜手机时,背景会移动。到目前为止我已经实现了这一点,但我仍然有一个问题。在我倾斜手机并且背景移动后,它会非常缓慢地移回居中位置。 这不是约
我遇到了 UIInterpolatingMotionEffect 类并出现问题,应用程序可以编译,但是当我尝试存档时出现此编译错误: 'UIInterpolatingMotionEffect' 的可见
我是一名优秀的程序员,十分优秀!