Использование углов штрих-кода для создания CGRect?

Я пытаюсь нарисовать красный прямоугольник над обнаруженным штрих-кодом, используя новейшие API-интерфейсы для iOS 7. Мне удалось вывести границы и углы, но я не совсем понимаю, как взять эту информацию и применить ее к своему мнению.

В методе 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 вокруг штрих-кода. Вот пример того, что я пытаюсь сделать:

введите описание изображения здесь

1 ответ

Вам нужно будет построить CGPath или же UIBezierPath путь на основе этих углов, а затем нарисуйте путь.

  • С CGPath подход, создать путь, используя CGPathCreateMutable, Создайте путь с помощью CGPathMoveToPoint установить начальную точку, а затем с помощью CGPathAddLineToPoint двигаться оттуда к каждому углу по очереди. Когда вы закончите, вы можете использовать путь с CAShapeLayer, Добавьте этот слой как подслой в вашем представлении.
  • С UIBezierPathследуйте тому же общему подходу, что и с CGPath, использование moveToPoint: начать и addLineToPoint: нарисовать форму. Нарисуйте путь как обычно (обычно в drawRect в представлении).
Другие вопросы по тегам