[objective-c]以截图的 UIView 具有与 CATransform3DMakeRotation 的子视图

标签: ios Objective-C
发布时间: 2016/10/4 5:41:57
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我想生成的 UIView 截图哪有 subview 与 CATransform3DMakeRotation 。屏幕截图生成的但它并不包含旋转。

是否可能实现这一目标?

实际的视图︰

enter image description here

屏幕截图图像

enter image description here

使用下面的调用为水平翻转视图...

  currentView.layer.transform = CATransform3DConcat(currentView.layer.transform,CATransform3DMakeRotation(M_PI, 0.0, 1.0, 0.0f));

代码接收屏幕截图

+ (UIImage *) imageWithView:(UIView *)view
{
    CGSize screenDimensions = view.bounds.size;

    // Create a graphics context with the target size
    // (last parameter takes scale into account)
    UIGraphicsBeginImageContextWithOptions(screenDimensions, NO, 0);

    // Render the view to a new context
    CGContextRef context = UIGraphicsGetCurrentContext();
    [view.layer renderInContext:context];

    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();    
    UIGraphicsEndImageContext();

    return img;
}

解决方法 1:

"RenderInContext"仅适用于仿射变换。所以将三维变换转换成这样的仿射变换

currentView.layer.affineTransform = CATransform3DGetAffineTransform(CATransform3DConcat(currentView.layer.transform,CATransform3DMakeRotation(M_PI, 0.0, 1.0, 0.0f)));
赞助商