使用CABasicAnimation切割视图一半

时间:2014-10-08 22:59:40

标签: ios uiview core-animation clipping

所以我想在看似3D的东西中旋转我的UIView。我做了一个快速搜索,互联网上说:使用核心动画。所以我看了一眼,然后我想出了这个代码,让我的视图旋转

CABasicAnimation* animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.x"];
    animation.fromValue = @(0);
    animation.toValue = @(4 * M_PI);
    animation.repeatCount = INFINITY;
    animation.duration = 5.0;

    [self.layer addAnimation:animation forKey:@"rotation"];

    CATransform3D transform = CATransform3DIdentity;
    transform.m34 = 1.0 / -2000;

    self.layer.transform = transform;

    self.layer.masksToBounds = NO;

实际视图旋转正常,但它会切断视图的一半。下面是我在photoshop中制作的快速图片,以显示我的意思enter image description here

我现在已经进行了数小时的搜索,我似乎无法弄清楚是什么导致了这种情况。任何帮助或输入将不胜感激。感谢。

编辑:以下是我创建视图的方式:

UIView* test = [[UIView alloc] initWithFrame:CGRectMake(200, 200, 100, 100)];
        test.backgroundColor = [UIColor redColor];
        [self.view addSubview:test];

在界面生成器中创建的视图上尝试后,它工作正常,但我需要以编程方式进行这些操作。

1 个答案:

答案 0 :(得分:7)

我有同样的问题,但最终在这里找到了解决方案: http://iphonedevsdk.com/forum/iphone-sdk-development/35864-catransform3d-cabasicanimation-problem.html

要阻止彼此重叠的图层,您可以更改zPosition。

在您的情况下,类似于self.layer.zPosition = 100.0f;

希望我能帮助你:)。