使用 CATransform3DRotate 制作动画
Issue animating with CATransform3DRotate
我的代码在下面,但是动画是立即发生的,即视图不再可见:
UIView *leftDoorView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width /2, self.view.bounds.size.height)];
leftDoorView.backgroundColor = [UIColor greenColor];
leftDoorView.layer.anchorPoint = CGPointMake(0.0, 0.5);
[self.view addSubview:leftDoorView];
leftDoorView.center = CGPointMake(0.0, self.view.bounds.size.height/2.0); //compensate for anchor offset
CATransform3D transform = CATransform3DIdentity;
transform.m34 = -1.0f/500.0;
transform = CATransform3DRotate(transform, M_PI_2, 0, 1, 0);
[UIView animateWithDuration:1.0 animations:^{
leftDoorView.layer.transform = transform;
}];
不确定我做错了什么 - 请提供任何帮助。
问题原来是其他视图层的 zPositions - 很可能是由视图层次结构中的 UITableView 引起的。
该设置是一个 UIViewController,它将 header UIImageView 和一个 UITableView 添加到它自己在 viewDidLoad 中的视图中。然后将动画最后添加到其他视图之上。似乎 UITableView 以某种方式修改了图层的 zPositions,所以只有在最终尝试 leftdoorView.layer.zPosition = 1000;
并将实际动画移动到单独的选择器后,在 viewDidLoad 动画显示正确后 0.2 秒执行。
我的代码在下面,但是动画是立即发生的,即视图不再可见:
UIView *leftDoorView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width /2, self.view.bounds.size.height)];
leftDoorView.backgroundColor = [UIColor greenColor];
leftDoorView.layer.anchorPoint = CGPointMake(0.0, 0.5);
[self.view addSubview:leftDoorView];
leftDoorView.center = CGPointMake(0.0, self.view.bounds.size.height/2.0); //compensate for anchor offset
CATransform3D transform = CATransform3DIdentity;
transform.m34 = -1.0f/500.0;
transform = CATransform3DRotate(transform, M_PI_2, 0, 1, 0);
[UIView animateWithDuration:1.0 animations:^{
leftDoorView.layer.transform = transform;
}];
不确定我做错了什么 - 请提供任何帮助。
问题原来是其他视图层的 zPositions - 很可能是由视图层次结构中的 UITableView 引起的。
该设置是一个 UIViewController,它将 header UIImageView 和一个 UITableView 添加到它自己在 viewDidLoad 中的视图中。然后将动画最后添加到其他视图之上。似乎 UITableView 以某种方式修改了图层的 zPositions,所以只有在最终尝试 leftdoorView.layer.zPosition = 1000;
并将实际动画移动到单独的选择器后,在 viewDidLoad 动画显示正确后 0.2 秒执行。