来自zbar的ZBarReaderView Class documentation:
CGRect 扫描裁剪
将被扫描的视频图像区域,以标准化图像坐标。请注意,视频图像处于横向模式(默认 {{0, 0}, {1, 1}})
所有参数的坐标都是标准化的浮点数,从 0 到 1。因此,在标准化值中,theView.width 是 1.0,theView.height 是 1.0。因此,默认的矩形是 {{0,0},{1,1}}。
例如,如果我有一个名为scanView 的透明UIView 作为readerView 的扫描区域。而不是这样做:
readerView.scanCrop = scanView.frame;
我们应该这样做,首先标准化每个参数:
CGFloat x,y,width,height;
x = scanView.frame.origin.x / readerView.bounds.size.width;
y = scanView.frame.origin.y / readerView.bounds.size.height;
width = scanView.frame.size.width / readerView.bounds.size.width;
height = scanView.frame.size.height / readerView.bounds.size.height;
readerView.scanCrop = CGRectMake(x, y, width, height);
它对我有用。希望对您有所帮助。