Как я могу изменить каркас ридера ZBar? - PullRequest
6 голосов
/ 07 июля 2011

Хорошо, поэтому я использую ZBar SDK для сканирования штрих-кодов в своем приложении для iPhone. Я успешно реализовал пример кода, но теперь я хочу изменить рамку представления сканера (т. Е. До половины размера экрана). Я попытался установить рамку представления читателя в viewDidLoad, но он сам изменяет размеры. Я знаю, что это будет одна из тех действительно простых вещей, которые я только что пропустил, но любая помощь будет высоко ценится. Приветствия.

РЕДАКТИРОВАТЬ: я получил его на работу. Вот мой код:

ZBarReaderViewController *reader = [ZBarReaderViewController new];
reader.readerDelegate = self;
ZBarImageScanner *scanner = reader.scanner;
[reader setShowsZBarControls:NO];
[reader.readerView setScanCrop:(CGRect){ { 0, 0 }, { 0.43, 1 } }];
[reader.readerView start];
[self.view addSubview:reader.view];

overlayView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
[listTableView setFrame:CGRectMake(0, 208, 320, 208)];
[overlayView addSubview:listTableView];
[self.view addSubview:overlayView];

Ответы [ 6 ]

7 голосов
/ 13 марта 2014

Вместо использования ZBarReaderViewController, попробуйте использовать ZBarReaderView.Это сработало для меня и сэкономило мне много времени.Надеюсь, это поможет вам.

ZBarReaderView*reader = [ZBarReaderView new];
ZBarImageScanner * scanner = [ZBarImageScanner new];
[scanner setSymbology: ZBAR_I25
               config: ZBAR_CFG_ENABLE
                   to: 0];
reader = [reader initWithImageScanner:scanner];
reader.readerDelegate = self;
reader.tracksSymbols = YES;
reader.frame = CGRectMake(20, 38, 283, 347);
reader.torchMode = 0;
dispatch_async(dispatch_get_main_queue(), ^{[reader start];});

[self.view addSubview:reader];
2 голосов
/ 11 июля 2011

Я разобрался. Вот что я должен был сделать:

  1. Добавить представление ZBarReaderViewController как подпредставление моего собственного представления (которое досадно заполняет весь просмотр, независимо от того, каков его кадр).
  2. Измените размер сканирования ZBarReaderViewController на тот размер, который мне нужен (ВНИМАНИЕ: установка этого кадра не похожа на настройку обычного кадра, просто спросите, нужна ли вам помощь).
  3. Добавьте любые представления, которые вы хотите видеть, в представление наложения ZBarReaderViewController.

Это было очень сложно и не интуитивно понятно и нарушало многие руководящие принципы разработки кода Apple, но, в конце концов, все еще выполнимо.

0 голосов
/ 20 марта 2013

Лучший способ сделать это, чтобы он был внутри sampleView:

UIView *view = [self sampleView];
CALayer *viewLayer = [view layer];
[viewLayer setMasksToBounds:YES];
CGRect bounds = [view bounds];
[reader.view.layer setFrame:bounds];
[viewLayer insertSublayer:reader.view.layer below:[[viewLayer sublayers] objectAtIndex:0]];
0 голосов
/ 02 января 2013

Попробуйте это Это может помочь вам:

ZBarReaderViewController *reader= [ZBarReaderViewController new];
reader.readerDelegate = self;
reader.supportedOrientationsMask = ZBarOrientationMaskAll;

ZBarImageScanner *scanner = reader.scanner;
// TODO: (optional) additional reader configuration here

//    reader.showsCameraControls = NO;  // for UIImagePickerController
reader.showsZBarControls = NO;

// EXAMPLE: disable rarely used I2/5 to improve performance
[scanner setSymbology:ZBAR_I25|ZBAR_QRCODE
               config: ZBAR_CFG_ENABLE
                   to: 0];
[reader viewDidLoad];
[reader viewWillAppear:NO];
[reader viewDidAppear:NO];

[self.viewScan addSubview:reader.view];

здесь, self.viewScan - любой вид вашего текущего контроллера.

поэтому область сканирования теперь self.viewScan просмотр.

0 голосов
/ 10 июня 2012

Еще один способ изменить свойства контроллера представления сканирования - это импортировать проект ZBarSDK, компилировать и связывать его самостоятельно, а не использовать двоичную версию SDK.Затем вы можете внести любые необходимые изменения в контроллер представления (имейте в виду, что их лицензия ... вероятно, сначала следует прочитать)

0 голосов
/ 07 июля 2011

Вы можете создать свой собственный контроллер вида и представления и добавить представление ZBarReaderViewController как подпредставление своего собственного представления;

...