woong's

IOS Xcode QR, Barcode 사용하기 본문

Develop/IOS

IOS Xcode QR, Barcode 사용하기

dlsdnd345 2016. 2. 13. 18:04
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

IOS Xcode QR, Barcode 사용하기


아이폰 개발과정에서 바코드 , QR 을 읽어야 할 기회가 생겨서 라이브러리를 사용해 보았습니다.

Zxing 라이브러리를 처음에 사용해 보았지만 , 바코드 읽는 기능은 되나, view의 이벤트가 decode 

하는 과정에서 이벤트를 intercept 당하는것 같아서 Zbar로 변경 했습니다.



1. ZBar 문서

  http://zbar.sourceforge.net/iphone/sdkdoc/index.html


1. ZBar 준비 작업


  -ZBarSDK 다운로드

  http://sourceforge.net/projects/zbar/files/iPhoneSDK/ZBarSDK-1.2.dmg/download

  위경로를 통해서 파일을 다운로드 합니다.

 


위와같이 파일이 준비되면 환경을 구성할수 있는 준비는 완료 되었습니다. 

  

2. ZBar 사용방법


  1. 아이폰 기본 프로젝트를 생성 합니다.


  


2. ZBarSDK Import 작업을 진행 합니다.

   여기서 주의점이 있습니다. 문서에는 받은 ZBarSDK 를 Drag & Drop 으로 이동시켜서 하라고 나오는데

   이렇게 하면 "ZBarSDK.h" file not found" 오류가 나타 납니다. 저것때문에 삽질만 몇시간 했네요 ㅜ

   필자는 newGroup 을 통해서 패키지형태를 잡아주고 file  들만 이동시켜서 구성 했습니다.


  


이렇게 구성을 하고 이제 필요한 frameWork 를 추가 합니다.

문서에서 보면 순서가 중요하다고 나타 납니다. 위 순서대로 맞춰서 작업 하면 좋을것 같습니다.




  • AVFoundation.framework (weak)
  • CoreMedia.framework (weak)
  • CoreVideo.framework (weak)
  • QuartzCore.framework
  • libiconv.dylib


프로젝트 > Build Phases > Link Binary With Libraries > + 를 통해 framework 를 추가합니다.

여기까지 준비가 완료 되면 코드를 작성 할수 있습니다.


3. 코드작성


화면 헤더파일에 import 를 진행합니다.



여기서 ZBarSDK.h 가 찾을수 없다는 에러가 나오면 환경을 다시 설정해야 합니다.

오류가 나지 않으면 코드 작성을 진행 하면 됩니다.



1
2
3
4
5
6
7
8
9
10
11
12
13
#import <UIKit/UIKit.h>
#import "ZBarSDK.h"
 
@interface ViewController : UIViewController <ZBarReaderDelegate>
 
@property (strong, nonatomic) IBOutlet UITextField *textFieldUrl;
 
- (IBAction)scanPressed:(id)sender;
 
@end
 
 
 
cs


화면구성을 위와같이 하고 코드를 연결하였습니다.

여기서 중요한코드는 import 와 ZBarReaderDelegate 입니다.

이렇게 구성후 main 을 작성 합니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#import "ViewController.h"
 
@interface ViewController ()
 
@end
 
@implementation ViewController
 
- (void)viewDidLoad {
    [super viewDidLoad];
 
}
 
 
/**
 * 스캔 버튼 작성 시
 */
- (IBAction)scanPressed:(id)sender {
    
    // ADD: present a barcode reader that scans from the camera feed
    ZBarReaderViewController *reader = [ZBarReaderViewController new];
    reader.readerDelegate = self;
    reader.supportedOrientationsMask = ZBarOrientationMaskAll;
    
    ZBarImageScanner *scanner = reader.scanner;
    // 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];
    
    // present and release the controller
    [self presentViewController:reader animated:YES completion:nil];
}
 
 
/**
 * 스캔 성공시 콜백
 */
- (void) imagePickerController: (UIImagePickerController*) reader didFinishPickingMediaWithInfo: (NSDictionary*) info{
    // ADD: get the decode results
    id<NSFastEnumeration> results = [info objectForKey: ZBarReaderControllerResults];
    ZBarSymbol *symbol = nil;
    for(symbol in results)
        // EXAMPLE: just grab the first barcode
        break;
    
    // EXAMPLE: do something useful with the barcode data
    _textFieldUrl.text = symbol.data;
    
    // ADD: dismiss the controller (NB dismiss from the *reader*!)
    [reader dismissViewControllerAnimated:YES completion:nil];
}
 
 
 
@end
 
 
 
cs



위코드에서 스캔 버튼을 선택시 바코드 스캔 화면을 보여주고 있습니다.

바코드 스캔이 완료 되면 하단의 didFinishPickingMediaWithInfo 메서드가 호출 됩니다.

호출된 메서드의 파라미터로 스캔된 데이터를 받을 수 있습니다.



3. ZBar 참고

위 코드를 작성하면 아래와 같은 에러를 만날수 있습니다. 


위에러를 검색해보니 bitcode 를 포함할수 없다고 합니다.

프로젝트 > build settings > bit  검색 > NO 로 변경


ps 화면 커스터 마이징 

화면을 커스터마이징 하고 싶은경우는


1
2
3
4
 
reader.showsCameraControls = NO;  // for UIImagePickerController
reader.showsZBarControls = NO;
reader.cameraOverlayView = myControlView;
cs


위 코드와 같이 기존의 controller 에 구성된 view를 없애고 custom 한 view를 넣어주면 

화면을 바꿀수 있습니다.


'Develop > IOS' 카테고리의 다른 글

IOS Xcode 화면 사이즈 정리하기  (0) 2016.02.16
IOS Xcode CocoaPods Private 배포하기  (0) 2016.02.15
IOS CocoaPods 사용하기  (2) 2016.02.13
IOS Xcode WebView 파일 사용하기  (0) 2016.02.13
Xcode IOS UILabel 세로 정렬 하기  (0) 2016.02.13
Comments