Использование углов штрих-кода для создания 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
в представлении).