将CGPoint从CGRect转换为其他CGRect

时间:2014-05-05 05:56:15

标签: ios objective-c cgrect cgpoint

我在视图上放置了一个标签,并且视图的框架是 CGRectMake(0,0,270,203)。现在我必须使用 CGRectMake(0,0,800,600)拍摄视图的屏幕截图。所以我必须将标签从旧的矩形转换为新的矩形

这是我用来拍摄屏幕截图的代码:

CGRect rect = [view bounds];
UIGraphicsBeginImageContextWithOptions(rect.size,YES,0.0f);
CGContextRef context = UIGraphicsGetCurrentContext();
[view.layer renderInContext:context];
UIImage *capturedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

以下是我用来转换点的代码:

CGRect f = [view convertRect:lblMessage.frame fromView:viewMessage];

但是我无法从新图像中获得标签的实际位置。任何人都可以在我错的地方帮忙。

我在附上图片以获得更多说明。 在小视图中,我添加了一个标签,我必须根据大图像视图转换标签的帧。

Convert label from this view to big view.

enter image description here

谢谢,

2 个答案:

答案 0 :(得分:0)

    +(UIImage*)screenShotOf:(UIView*)view atScale:(CGFloat)scale
    {
        UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, scale);
        [view.layer renderInContext:UIGraphicsGetCurrentContext()];

        UIImage * img = UIGraphicsGetImageFromCurrentImageContext();

        UIGraphicsEndImageContext();

        return img;
    }

此处您需要根据需要调整缩放属性。

答案 1 :(得分:0)

你可以这样做:

-(CGPoint) convertPoint: (CGPoint) point fromRect: (CGRect) fromRect toRect: (CGRect) toRect {
    return (CGPoint){
        (toRect.size.width/fromRect.size.width) * point.x,
        (toRect.size.height/fromRect.size.height) * point.y
    };
}