我有一个 UIView 的自定义子类 LineDrawingView。我将其作为主视图控制器中的@property 并将其添加到视图中。这很好用——它在当前视图之上创建一个透明视图,并使用 UIBezierPath、touchesBegan、touchesMoved 等,因此您可以通过拖动手指来绘制整个视图。
我需要将该绘图视图设为“L”形,这样我就可以在左下角有一个区域来放置各种控件。我想不出任何办法使绘图视图为“L”形,除了可能添加两个单独的矩形绘图视图,但这不起作用,因为当您将手指从一个矩形拖动到另一个矩形时,触摸会中断。我想出的另一个解决方案是在绘图视图之上添加另一个视图。这个视图应该阻止绘图,我还可以在其中找到我的控件,以便在启用绘图时它们仍然可用。
我尝试创建一个 UIView 并将其添加为绘图视图的子视图。我给它染色了,这样我就可以检查它是否存在并且在正确的位置。我希望这可以防止在新 UIView 的区域内绘图,但在 LineDrawingView 的整个区域内继续绘图。我还尝试在索引 2 处插入新的 UIView,在索引 1 处插入 LineDrawingView。它仍然没有影响绘图。
self.drawView = [[LineDrawingView alloc] initWithFrame:CGRectMake(0, 50, 768, 905)];
[self.drawView setBackgroundColor:[UIColor clearColor]];
// not effective in preventing drawing!!
UIView *controlView = [[UIView alloc] initWithFrame:CGRectMake(0, 530, 310, 575)];
[controlView setUserInteractionEnabled:NO];
[controlView setBackgroundColor:[UIColor grayColor]];
[controlView setAlpha:0.3];
[self.view addSubview:drawView];
[self.drawView addSubview:controlView];
我很想知道:我怎么能...
创建一个“L”形的图纸视图?或者 剪下绘图视图的一部分,以便用户可以与它后面的内容进行交互?或者在绘图视图顶部强加一个区域,我可以在其中禁用绘图并添加我的控件?