Из документации * ZBarReaderView класса zbar :
CGRect scanCrop
Область видеоизображения, которое будет сканироваться, в нормализованное изображениекоординаты .Обратите внимание, что видеоизображение находится в альбомном режиме (по умолчанию {{0, 0}, {1, 1}})
Координаты для всех аргументов находятся в нормализованном числе с плавающей точкой, которое находится из0 - 1. Таким образом, в нормированном значении theView.width
равно 1,0, а theView.height
равно 1,0.Поэтому прямоугольник по умолчанию - {{0,0}, {1,1}}.
Так, например, если у меня есть прозрачный UIView
с именем scanView
в качестве области сканирования для моего 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);
Это работает для меня.Надеюсь, это поможет.