我正在为 iPhone 创建一个拼图游戏。
在这里我必须像下图一样裁剪图像
谷歌搜索后,我知道 uibezier 路径是裁剪不规则形状图像的最佳路径。
但是我没有得到任何代码或想法来像上面那样裁剪图像。
我正在为 iPhone 创建一个拼图游戏。
在这里我必须像下图一样裁剪图像
谷歌搜索后,我知道 uibezier 路径是裁剪不规则形状图像的最佳路径。
但是我没有得到任何代码或想法来像上面那样裁剪图像。
这将需要大量的试验和错误,我很快就这样做了,只是为了让您了解如何使用贝塞尔路径创建形状。下面是创建我快速创建的正方形的示例代码
UIBezierPath *aPath = [UIBezierPath bezierPath];
// Set the starting point of the shape.
[aPath moveToPoint:CGPointMake(50.0, 50.0)];
// Draw the lines.
[aPath addLineToPoint:CGPointMake(100.0, 50.0)];
[aPath addLineToPoint:CGPointMake(100.0, 100.0)];
[aPath addLineToPoint:CGPointMake(50.0, 100.0)];
[aPath closePath];
CAShapeLayer *square = [CAShapeLayer layer];
square.path = aPath.CGPath;
[self.view.layer addSublayer:square];
如果我有更多时间,我可以创建图像,但由于没有太多时间,所以很快就完成了。一旦你了解了积分是如何产生的,它就不会太难使用。创建此形状将花费您大量的试验和错误,但使用我提供的代码作为如何使用贝塞尔路径创建形状的基础。您将需要创建更多点才能最终获得您想要的形状。
我还建议查看 Apples developer guide 以创建不规则形状
特别是查看“将曲线添加到您的路径”以了解如何创建曲线并将它们添加到您的图像中。您将需要它来创建您尝试创建的拼图块形状
编辑:
试试这个方法
- (void) setClippingPath:(UIBezierPath *)clippingPath : (UIImageView *)imgView;
{
if (![[imgView layer] mask])
[[imgView layer] setMask:[CAShapeLayer layer]];
[(CAShapeLayer*) [[imgView layer] mask] setPath:[clippingPath CGPath]];
}
上述方法将采用贝塞尔路径和 ImageView,然后将贝塞尔路径应用于特定的 imageView。它也会进行剪辑。我想要经过大量的试验和错误才能使形状恰到好处,有时创建复杂的形状可能会很困难且令人沮丧。
应用此代码的快速示例
UIBezierPath *aPath = [UIBezierPath bezierPath];
// Set the starting point of the shape.
[aPath moveToPoint:CGPointMake(0.0, 0.0)];
// Draw the lines.
[aPath addLineToPoint:CGPointMake(50.0, 0.0)];
[aPath addLineToPoint:CGPointMake(50.0, 50.0)];
[aPath addLineToPoint:CGPointMake(0.0, 50.0)];
[aPath closePath];
UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bar.png"]];
imgView.frame = CGRectMake(0, 0, 100, 100);
[self setClippingPath:aPath :imgView];
[self.view addSubview:imgView];
很快就从图像的左上角制作了一个正方形。例如,如果您有一个正方形图像,您可以遍历图像的宽度和高度,使用上面的代码裁剪成单独的正方形并单独返回它们。创建拼图块要复杂得多,但希望这会有所帮助