Ios CALayer框架给出了一个奇怪的位置

Ios CALayer框架给出了一个奇怪的位置,ios,objective-c,calayer,Ios,Objective C,Calayer,我目前正在尝试使用CALayer显示遮罩,然后使用此遮罩根据此遮罩裁剪图片,但我找不到方法获得遮罩在图像中的良好位置和大小 当我绘制遮罩时,我使用kCAGravityResizeAspectFill来保持图像的比例。在这种情况下,层使用高度填充我的屏幕高度,并计算适当的宽度/(x,y)以保持比率 CGRect screenViewRect = [self.viewForBaselineLayout bounds]; CGFloat screenViewWidth = screenViewRec

我目前正在尝试使用CALayer显示遮罩,然后使用此遮罩根据此遮罩裁剪图片,但我找不到方法获得遮罩在图像中的良好位置和大小

当我绘制遮罩时,我使用kCAGravityResizeAspectFill来保持图像的比例。在这种情况下,层使用高度填充我的屏幕高度,并计算适当的宽度/(x,y)以保持比率

CGRect screenViewRect = [self.viewForBaselineLayout bounds];

CGFloat screenViewWidth = screenViewRect.size.width;
CGFloat screenViewHeight = screenViewRect.size.height;

masqueLayer.frame = CGRectMake(screenViewWidth *0.45, screenViewHeight*0.05, screenViewWidth *0.10, screenViewHeight*0.92);
masqueLayer.contents = (__bridge id)([UIImage imageNamed:masqueJustif].CGImage);
masqueLayer.contentsGravity = kCAGravityResizeAspectFill;
[self.layer insertSublayer:masqueLayer atIndex:2];
当我在屏幕上获得遮罩时,我可以很容易地看到screenViewWidth*0.10没有得到我想要的尊重,但我的问题是,当我获得帧或层时,宽度没有更新,因此我无法获得层在屏幕上的真实位置

是否有一种方法可以获取我的图层在屏幕上的真实位置

我实际上是想用这个来获得裁剪矩形(考虑到我的比率是21/29.7,因为它是A4遮罩)。这段代码实际上在IPad上有效,但在Iphone上无效,因为比率不同:

CGRect outputRect = [masqueLayer convertRect:masqueLayer.bounds toLayer:self.layer];
outputRect.origin.y *= 2;
outputRect.size.height *= 2;
outputRect.size.width = outputRect.size.height * (21/29.7);
我还尝试使用我的遮罩百分比:

    CGRect outputRect = masqueLayer.frame;
    outputRect.origin.y = its.size.height * 0.05;
    outputRect.origin.x = its.size.width * 0.45 * masqueLayer.anchorPoint.x;
    outputRect.size.height = its.size.height * 0.92;
    outputRect.size.width = its.size.height * 0.92 * (21/29.7);
这是另一层上我的面具的截图。我想提取以蓝色角为边界的图像(这是我图层的边界)


谢谢。

你能展示你想要实现的屏幕截图吗?我添加了一个屏幕截图,所以你希望图像覆盖在蓝色角落的矩形框中?是的,这就是我想要实现的。那么你不截图蓝色角落层后面的层和蓝色角落层的大小吗?