0

UIViewのカスタムサブクラスであるLineDrawingViewがあります。これをメインのViewControllerに@propertyとして持っており、ビューに追加します。これは正常に機能します。現在のビューの上に透明なビューを作成し、UIBezierPath、touchesBegan、touchesMovedなどを使用して、指をドラッグしてビュー全体に描画できるようにします。

その描画ビューを「L」字型にする必要があるので、左下隅にさまざまなコントロールが配置されている領域を作成できます。2つの別々の長方形の描画ビューを追加する以外に、描画ビューを「L」字型にする方法は考えられませんが、一方の長方形からもう一方の長方形に指をドラッグするとタッチが中断されるため、これは機能しません。私が思いついたもう1つの解決策は、図面ビューの上に別のビューを追加することです。このビューは描画を防ぐはずです。また、描画が有効になっている間もコントロールを使用できるように、コントロールをその中に配置することもできます。

UIViewを作成し、それを図面ビューのサブビューとして追加してみました。私はそれに色合いを付けたので、それが存在し、適切な場所にあることを確認できました。これにより、新しいUIViewの領域内での描画が妨げられると予想しましたが、描画はLineDrawingViewの領域全体で続行されます。また、新しいUIViewをインデックス2に挿入し、LineDrawingViewをインデックス1に挿入してみましたが、それでも描画には影響しませんでした。

    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」字型の図面ビューを作成しますか?または、ユーザーがその背後にあるものと対話できるように、図面ビューのセクションを切り取りますか?または描画を無効にしてコントロールを追加できる領域を描画ビューの上に課しますか?

4

3 に答える 3

1

これは、透明な角丸長方形 UIView の作成に関するチュートリアルです。これは、簡単な方法で変更して L 字型にすることができると思います。

覚えておくべき最も重要なことは、独自のメソッドを実装する必要があることです。drawRectまた、独自のhitTestまたはタッチ (例: のようなイベント処理touchedBegan:withEvent:) メソッドも実装する必要があります。

于 2012-01-05T10:16:30.407 に答える