在startDeviceMotionUpdatesToQueue中更改框架

时间:2013-06-14 23:44:54

标签: ios objective-c core-motion cmmotionmanager

我正在尝试使用CMMotionManager及其方法获得的值来更改我的UIView框架 - startDeviceMotionUpdatesToQueue:withHandler

我写了这样的草稿:

[_motionManager startDeviceMotionUpdatesToQueue:theQueue withHandler:^(CMDeviceMotion *motion, NSError *error) {
        CGRect frame = _backgroundView.frame;
        double x = motion.attitude.roll;
        frame.origin.x = x*10;
        [_backgroundView setFrame:frame];
}];

但我的观点根本没有动。如果我记录我的框架,我可以在每次更新时看到更改...那么为什么我的视图不会在屏幕上移动?

1 个答案:

答案 0 :(得分:0)

您使用的是Storyboard吗?问题可能是由于Storyboard中设置的约束覆盖了帧更改。

通过代码更改自动布局约束,然后尝试上面的帧更改。

要强制更改,您可以在帧更改后使用 - (void)setNeedsLayout方法。