如何使用UIBezierPath来擦除写意画?

时间:2015-08-14 07:48:29

标签: ios swift uibezierpath

我在app中有两个UIView,一个可以徒手画上它调用铅笔视图,另一个放图形(如图像,矩形等)调用移动视图

enter image description here

现在我使用白色来擦除铅笔视图,但是移动视图会受到影响(某些区域被覆盖) enter image description here

我想要达到的效果是

enter image description here

这是我的徒手绘制代码

var Tail = require('always-tail');
var fs = require('fs');
var filename = "/tmp/testlog";

if (!fs.existsSync(filename)) fs.writeFileSync(filename, "");

var tail = new Tail(filename, '\n');

tail.on('line', function(data) {
  console.log("got line:", data);
});


tail.on('error', function(data) {
  console.log("error:", data);
});

tail.watch();

1 个答案:

答案 0 :(得分:1)

首先,定义Bool,或者说你正在擦除的一些迹象:

let eraserEnabled : Bool = false

启用橡皮擦时,请更改eraserEnabled = true。这将使你保持状态。现在,您可以通过更改混合模式来更改路径,使其实际上为-ERASES-:

// Instead of this
self.path.stroke()

// Do this
self.path.strokeWithBlendMode(erase ? kCGBlendModeClear : kCGBlendModeNormal, alpha: 1.0)

现在,当你启用了橡皮擦时,你将有效地"剪切"把所有东西都拿出来,但它会被清晰的颜色所取代,而不是白色,所以你将能够看到背景或其他元素。

希望它有所帮助!