2

iOS 7 の最新のバーコード API を使用して、検出されたバーコードの上に赤い四角形を描画しようとしています。境界とコーナーをなんとか引き込むことができましたが、その情報を取得して自分のビューに適用する方法がよくわかりません。

viewDidLoad メソッドで、見つかったバーコードをオーバーレイするために使用するビューを定義します。

    //Initialize Laser View
    laserView = [[UIView alloc] init];
    laserView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleBottomMargin;
    laserView.layer.borderColor = [UIColor redColor].CGColor;
    laserView.layer.borderWidth = 2;
    [self.view addSubview:laserView];

didOutputMetadataObjects で、レーザー ビューを準備し、バーコードの境界とコーナーを取り込みます。

//Prepare Laser View's frame
CGRect laser = CGRectZero; 

laser = barcodeObject.bounds;
NSLog(@"Bounds: %@", NSStringFromCGRect(barcodeObject.bounds));
NSLog(@"Frame: %@", barcodeObject.corners);

//Update Laser
laserView.frame = laser;

私の最近の実行では、私が得た境界について:{{7.0565414, 314.25}, {265.26062, 1.499999}} および私が得たコーナーについて:

 (

    {
        X = "7.056541";
        Y = "314.25";
    },
        {
        X = "7.056541";
        Y = "315.75";
    },
        {
        X = "272.3172";
        Y = "315.75";
    },
        {
        X = "272.3172";
        Y = "314.25";
    }
)

バーコードの周りに cgrect をしっかりとラップできるようにしたい。これが私がやろうとしていることの例です:

ここに画像の説明を入力

4

1 に答える 1

1

これらの角に基づいてCGPathまたはパスを作成し、パスを描画する必要があります。UIBezierPath

  • このCGPathアプローチでは、 を使用してパスを作成しますCGPathCreateMutableCGPathMoveToPointを使用して始点を設定し、 を使用CGPathAddLineToPointしてそこから各コーナーに順番に移動してパスを作成します。終了したら、パスを使用できますCAShapeLayer。そのレイヤーをサブレイヤーとしてビューに追加します。
  • UIBezierPathについては、 と同じ一般的なアプローチに従いますCGPathmoveToPoint:形状の開​​始とaddLineToPoint:描画に使用します。通常どおりパスを描画します (通常drawRectはビュー内)。
于 2014-02-11T21:58:03.920 に答える