CALayer框架给出了奇怪的位置

时间:2015-11-16 15:37:34

标签: ios objective-c calayer

我目前正在尝试使用 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);

这是我在另一层上的面具的截图。我想提取由蓝色角落(这是我的图层的边界)限定的图像 Screen

感谢。

0 个答案:

没有答案