• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 使用条形码角创建 CGRect?

[复制链接]
菜鸟教程小白 发表于 2022-12-12 18:47:17 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在尝试使用 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 紧紧地包裹在条形码周围。这是我正在尝试做的一个示例:

enter image description here



Best Answer-推荐答案


您需要根据这些角构造一个 CGPathUIBezierPath 路径,然后绘制路径。

  • 使用 CGPath 方法,使用 CGPathCreateMutable 创建路径。创建路径,使用CGPathMoveToPoint设置起点,然后使用CGPathAddLineToPoint从那里依次移动到每个角落。完成后,您可以使用带有 CAShapeLayer 的路径。将该层添加为 View 中的子层。
  • 使用 UIBezierPath,遵循与使用 CGPath 相同的一般方法。使用 moveToPoint: 开始并使用 addLineToPoint: 绘制形状。像往常一样绘制路径(通常在 View 中的 drawRect 中)。

关于ios - 使用条形码角创建 CGRect?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21712632/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap