3

216x20 px のストーリーボードから作成された ZBarReaderView を持っています。これは、ZBarReaderView がそのサイズをあまり深刻に考えていないため、およそ 230x50 px として表示されます...すべてうまく機能しますが、その readerView で start を呼び出すと、非常に奇妙な動作をします. カムを開始しますが、おそらく0.5秒でreaderViewが少しズームし、readerView内のカメラ画像が下に移動してから再び上に移動します。悪くはないけど見た目が悪い。これを引き起こしている可能性のあるものと、それを解決する方法を知っている人はいますか? おそらく、sdk にはスキャナーの準備のための何らかの隠しコールバックがあります。スキャナーが準備ができていると言うまでそれを非表示にしてから、.5 秒後にスキャナーを表示することができます...

バーコードリーダーは、ZBarReaderView への ioutlet であり、scannerLoading は、スキャナーがロードされるまでアニメーション化されている uiactivityindicatorview への ioutlet です。もちろん、ストーリーボードに設定されているフレームを除いて、これらはデフォルトから変更された唯一の設定です。

[barcodeReader setReaderDelegate:self];
[barcodeReader setAllowsPinchZoom:false];
[barcodeReader start];

/* this works because [barcodeReader start] blocks ui updates until the scanner
   is running, i know it's not a good solution but since there doesn't seem to 
   be a callback or delegate method like scannerDidStart or something it seems 
   to be the only way... */
[scannerLoading stopAnimating]; 

ご協力いただきありがとうございます!

4

2 に答える 2

3

報復された質問への回答を投稿しました。

StoryBoard からのカスタム サイズの ZBarReadview ですが、呼び出されたときにサイズが設定されていません

多分答えはあなたの問題も解決します。

要するに:

Interface Builder または Storyboard を使用してビューを作成し、それに ZBarReaderView を割り当てる場合、ビューのサイズを維持するために、カメラ イメージのプロパティで [サブビューのクリップ] をチェックする必要があります。

于 2012-10-23T14:09:52.623 に答える
0

別のビューを追加して、その一部を透明にする必要のある画像を含む画像ビューを備えたカメラオーバーレイビューとして作成します。次に、ボタンアクションで `

//追加:カメラフィードからスキャンするバーコードリーダーを提示します

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

reader.supportedOrientationsMask = ZBarOrientationMaskAll;

reader.sourceType=UIImagePickerControllerSourceTypeCamera;
//reader.cameraDevice = UIImagePickerControllerCameraDeviceFront;

reader.cameraOverlayView=cameraOverlay;

if( [UIImagePickerController isCameraDeviceAvailable:                         UIImagePickerControllerCameraDeviceFront ])
{
       reader.cameraDevice = UIImagePickerControllerCameraDeviceFront;
}
ZBarImageScanner *scanner = reader.scanner;

reader.wantsFullScreenLayout = YES;
// TODO: (optional) additional reader configuration here

// EXAMPLE: disable rarely used I2/5 to improve performance

[scanner setSymbology: ZBAR_I25
               config: ZBAR_CFG_ENABLE
                   to: 0];
 reader.showsZBarControls = NO; 
// present and release the controller

[自己presentModalViewController:readerアニメーション:YES]; // [appdel.navigationController pushViewController:readerアニメーション:YES];

//[reader.view addSubview:collect];


[reader release];add this and then also add 

`-(void)imagePickerController:(UIImagePickerController *)リーダーdidFinishPickingMediaWithInfo:(NSDictionary *)info {//追加:デコード結果を取得id results = [info objectForKey:ZBarReaderControllerResults]; ZBarSymbol * symbol = nil; for(symbol in results)//例:最初のバーコードブレークを取得するだけです。

 [self rewards:symbol.data];

} `

方法として。これがあなたの問題を解決することを願っています

于 2012-06-22T12:23:57.017 に答える