Swift SharkORM を使用するには?

新規プロジェクトを XCode で作成して、一旦閉じる。(SharkORMTest)

ターミンナルより SharkORMTest に移動

pod init

Profile に 以下の様に編集

# Uncomment the next line to define a global platform for your project
platform :ios, '11.0'

target 'SharkOrmTest' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  #use_frameworks!
  pod 'SharkORM'

  # Pods for SharkOrmTest

  target 'SharkOrmTestTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'SharkOrmTestUITests' do
    inherit! :search_paths
    # Pods for testing
  end

end

以下のコマンドを実行
pod install

xcode にて SharkOrmTest.xcodeproj ではなく SharkOrmTest.xcworkspace を開く

SharkHeader.h ブリッジヘッダーファイルを作成

#ifndef SharkHeader_h
#define SharkHeader_h

#include <SharkORM/SharkORM.h>

#endif /* SharkHeader_h */

build settings
-> objective-c Bridging Heatter に以下を追加

$(SRCROOT)/$(PRODUCT)/SharkHeader.h

上記を忘れると以下のエラーが出ます。

Use of undeclared type 'SRKDelegate'
Use of undeclared type 'SRKObject'

テーブルに対応するクラスを作成

import Foundation
import SharkORM

class Sentence: SRKObject {
    @objc dynamic var _id : NSNumber?
    @objc dynamic var categoryId : NSNumber?
    @objc dynamic var english : String?
    @objc dynamic var japanese : String?
    @objc dynamic var okCount : NSNumber?
    @objc dynamic var ngCount : NSNumber?
    @objc dynamic var average : NSNumber?
}

以下、追加

import SharkORM

class AppDelegate: UIResponder, UIApplicationDelegate, SRKDelegate {

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        SharkORM.setDelegate(self)
        SharkORM.openDatabaseNamed("myDatabase")
        initDb()
        return true
    }

    func initDb() {

        insertData(english:"this is a pen.")
        insertData(english:"this is an apple.")
        insertData(english:"can you speack japanese.")

        var results = Sentence.query().fetch()
        print(String(format: "count:%d", (results?.count)!))
        for sentence in results! {
            let s = sentence as! Sentence
            print((sentence as AnyObject).english)
        }

    }

    func insertData( english: String ) {
        var a = Sentence()
        a.english = english
        a.commit()
    }

色々とハマタ

sample 見ながら SharkORM を組み込んだら、以下のエラー


ld: library not found for -lSharkORM

本家のサンプルでも同様のエラー
原因わからず、使うのをやめようと思ったら基本的事がわかってなかった orz

以下、実行

pod init

Podfile に以下追加

pod 'sharkORM'

以下のコマンド実行

pod install

プロジェクトファイルで以下のファイルを開く(*これ知らなかった、read.me ファイル無いし)

SharkBooksSample.xcworkspace

とりえあず実行できた!


  BackView *bv = [[BackView alloc] initWithFrame:rect];
  [self.view addSubview:bv];

- (id)initWithFrame:(CGRect)theFrame {
    self = [super initWithFrame:theFrame];
    
    self.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.8];
    
    CAShapeLayer *maskLayer = [CAShapeLayer layer];
    maskLayer.bounds = [[self layer] bounds];

    CGRect rect = [[self layer] bounds];
    UIBezierPath *outerRectanglePath = [UIBezierPath bezierPathWithRect:rect];
    CGRect rect2 = CGRectMake(rect.size.width/2 - 50, rect.size.height/2- 50, 100, 100);
    UIBezierPath *interRectanglePath = [UIBezierPath bezierPathWithRect:rect2];
    
    [outerRectanglePath appendPath:interRectanglePath];
    maskLayer.path = outerRectanglePath.CGPath;
    maskLayer.position = CGPointMake( rect.size.width / 2.0 , rect.size.height / 2.0 );
    
    maskLayer.fillRule = kCAFillRuleEvenOdd;
//    maskLayer.fillRule = kCAFillRuleNonZero;
    [self layer].mask = maskLayer;
    
    return self;
}

Android ZXing QRコード読み込み画面に、白枠をつけるには?

バーコードの読み取りエリアは、150dp

<Framelayout>
    <RelaytiveLayout>
       barcode scan
    </RelativeLayout>
    <RelaytiveLayout>
       cross line
    </RelativeLayout>
</Framelayout>

xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

<RelativeLayout
    android:layout_width="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_height="match_parent">

    <com.journeyapps.barcodescanner.DecoratedBarcodeView
        android:id="@+id/barcode_scanner"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_above="@+id/buttonsLayout"
        app:zxing_scanner_layout="@layout/custom_barcode_scanner"
        android:layout_alignParentTop="true">

    </com.journeyapps.barcodescanner.DecoratedBarcodeView>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_alignParentBottom="true"
        android:id="@+id/buttonsLayout"
        android:layout_toLeftOf="@+id/centerHorizont">

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Pause"
            android:onClick="pause" />

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Resume"
            android:onClick="resume" />
    </LinearLayout>

    <View
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_centerHorizontal="true"
        android:id="@+id/centerHorizont" />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_toRightOf="@id/centerHorizont"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@id/buttonsLayout"
        android:id="@+id/barcodePreview" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignLeft="@+id/barcode_scanner"
        android:layout_alignParentTop="true"
        android:layout_alignStart="@+id/barcode_scanner"
        android:orientation="horizontal"></LinearLayout>

</RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_gravity="top"
        android:background="@android:color/white"
        android:orientation="vertical">

        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="戻る" />
    </LinearLayout>

        <TextView
            android:id="@+id/qr_scan_message1"
            android:text="qr_scan_message1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_above="@+id/crossLineLayout"
            android:layout_marginBottom="50dp"
            android:layout_marginRight="30dp"
            android:layout_marginLeft="30dp"
            />

        <TextView
            android:id="@+id/qr_scan_message2"
            android:text="qr_scan_message2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/crossLineLayout"
            android:layout_marginTop="50dp"
            android:layout_marginRight="30dp"
            android:layout_marginLeft="30dp"
            />

    <!-- cross line -->
    <LinearLayout
        android:id="@+id/crossLineLayout"
        android:layout_width="153dp"
        android:layout_height="153dp"
        android:layout_centerInParent="true"
        android:orientation="vertical">

        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="@android:color/white" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="75dp"
            android:orientation="horizontal">

            <View
                android:layout_width="1dp"
                android:layout_height="match_parent"
                android:background="@android:color/white" />

            <View
                android:layout_width="75dp"
                android:layout_height="match_parent"
                android:background="@android:color/transparent" />

            <View
                android:layout_width="1dp"
                android:layout_height="match_parent"
                android:background="@android:color/white" />

            <View
                android:layout_width="75dp"
                android:layout_height="match_parent"
                android:background="@android:color/transparent" />

            <View
                android:layout_width="1dp"
                android:layout_height="match_parent"
                android:background="@android:color/white" />

        </LinearLayout>

        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="@android:color/white" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="75dp"
            android:orientation="horizontal">

            <View
                android:layout_width="1dp"
                android:layout_height="match_parent"
                android:background="@android:color/white" />

            <View
                android:layout_width="75dp"
                android:layout_height="match_parent"
                android:background="@android:color/transparent" />

            <View
                android:layout_width="1dp"
                android:layout_height="match_parent"
                android:background="@android:color/white" />

            <View
                android:layout_width="75dp"
                android:layout_height="match_parent"
                android:background="@android:color/transparent" />

            <View
                android:layout_width="1dp"
                android:layout_height="match_parent"
                android:background="@android:color/white" />

        </LinearLayout>

        <View
            android:layout_width="match_parent"
            android:layout_height="2dp"
            android:background="@android:color/white" />

    </LinearLayout>
</RelativeLayout>
</FrameLayout>

Android ZXing QR 読み取りのセンターラインを消すには?

カスタムレイアウトを有効にする

    <com.journeyapps.barcodescanner.DecoratedBarcodeView
        android:id="@+id/barcode_scanner"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_above="@+id/buttonsLayout"
        app:zxing_scanner_layout="@layout/custom_barcode_scanner"
        android:layout_alignParentTop="true">

フォーカスサイズを変更する

    <com.journeyapps.barcodescanner.BarcodeView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/zxing_barcode_surface"
        app:zxing_framing_rect_width="150dp"
        app:zxing_framing_rect_height="150dp"/>

中央ラインをけす

   <com.journeyapps.barcodescanner.ViewfinderView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/zxing_viewfinder_view"
        app:zxing_possible_result_points="@color/zxing_custom_possible_result_points"
        app:zxing_result_view="@color/zxing_custom_result_view"
        app:zxing_viewfinder_laser="@color/zxing_custom_viewfinder_laser"
        app:zxing_viewfinder_mask="@color/zxing_custom_viewfinder_mask"/>

   <com.journeyapps.barcodescanner.ViewfinderView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/zxing_viewfinder_view"
        app:zxing_possible_result_points="@color/zxing_transparent"
        app:zxing_result_view="@color/zxing_custom_result_view"
        app:zxing_viewfinder_laser="@color/zxing_custom_viewfinder_laser"
        app:zxing_viewfinder_mask="@color/zxing_custom_viewfinder_mask"/>

app:zxing_possible_result_point を透明にする

バックグランドを暗くするには、以下のマスクを変更

  <color name="zxing_custom_viewfinder_mask">#90000000</color>

途中で検地されて出る青い点を消すときは

        app:zxing_viewfinder_laser="@color/zxing_transparent"
© 2024 Falco Tech Blog Suffusion theme by Sayontan Sinha