我正在尝试使用 iOS 7 的最新条形码 api 在检测到的条形码上绘制一个红色矩形。我已经设法拉入边界和角落,但我不太清楚如何获取这些信息并将其应用到我的 View 中。
在 viewDidLoad 方法中,我定义了一旦找到我将用来覆盖条形码的 View :
//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 中,我准备了激光 View 并拉入条形码边界和角:
//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 紧紧地包裹在条形码周围。这是我正在尝试做的一个示例:
您需要根据这些角构造一个 CGPath
或 UIBezierPath
路径,然后绘制路径。
CGPath
方法,使用 CGPathCreateMutable
创建路径。创建路径,使用CGPathMoveToPoint
设置起点,然后使用CGPathAddLineToPoint
从那里依次移动到每个角落。完成后,您可以使用带有 CAShapeLayer
的路径。将该层添加为 View 中的子层。UIBezierPath
,遵循与使用 CGPath
相同的一般方法。使用 moveToPoint:
开始并使用 addLineToPoint:
绘制形状。像往常一样绘制路径(通常在 View 中的 drawRect
中)。关于ios - 使用条形码角创建 CGRect?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21712632/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |