Iphone 同时透视和翻转UIImageView
我尝试翻转并给透视旋转一个uiimageview,以获得类似反射的效果。首先,我使用CATTransferM3D给出透视图,然后使用CGAffineTransformMake进行翻转。然而,在第二次转换后,我失去了透视效果。我不知道如何使用CATTransferM3D透视和翻转这两种方式。img是第一个图像,img2将是它的反射Iphone 同时透视和翻转UIImageView,iphone,objective-c,uiimageview,rotation,perspective,Iphone,Objective C,Uiimageview,Rotation,Perspective,我尝试翻转并给透视旋转一个uiimageview,以获得类似反射的效果。首先,我使用CATTransferM3D给出透视图,然后使用CGAffineTransformMake进行翻转。然而,在第二次转换后,我失去了透视效果。我不知道如何使用CATTransferM3D透视和翻转这两种方式。img是第一个图像,img2将是它的反射 CALayer *layer = img.layer; CATransform3D rotationAndPerspectiveTransform = CATransf
CALayer *layer = img.layer;
CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity;
rotationAndPerspectiveTransform.m34 = 1.0 / -600;
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, 30.0f * M_PI / 180.0f, 0.0f, 1.0f, 0.0f);
layer.transform = rotationAndPerspectiveTransform;
img2.transform = CGAffineTransformMake(
1, 0, 0, -1, 0, img2.bounds.size.height
);
我可以通过4个(可选5个)步骤实现此效果:
reflectionView.image = [UIImage
imageWithCGImage:mainImageView.image.CGImage
scale:1.0f
orientation: UIImageOrientationDownMirrored];
CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity;
rotationAndPerspectiveTransform.m24 = 1.0f/-mainImageView.frame.size.width;
[[reflectionView layer] setTransform:rotationAndPerspectiveTransform];
reflectionView.center = CGPointMake(self.view.frame.size.width/2, mainImageView.frame.size.height*1.5);
reflectionView.layer.masksToBounds = YES;
// define gradient
CAGradientLayer *theGradient = [CAGradientLayer layer];
theGradient.frame = reflectionView;
theGradient.colors = [NSArray arrayWithObjects:
(id)[[UIColor clearColor] CGColor],
(id)[[UIColor blackColor] CGColor], nil];
// add gradient to reflection image
[reflectionView insertSublayer:theGradient atIndex:0];
reflectionView = 0.25f;
您在那里的代码需要做大量工作才能按您所说的那样执行,但这是一个不错的起点。