Skip to content

react-native-signature-ink là gì? ​

react-native-signature-ink là bảng ký tên cho React Native, vẽ bằng chính engine mực của từng nền tảng thay vì canvas JavaScript, Skia hay WebView.

  • iOS dùng PencilKit (PKCanvasView), engine đứng sau ứng dụng Ghi chú. Bạn có sẵn lực nhấn, độ nghiêng Apple Pencil và thuật toán làm mượt của PencilKit.
  • Android dùng bản port Kotlin của thuật toán chữ ký velocity-Bezier quen thuộc: nét vẽ được làm mượt bằng đường cong Bezier bậc ba và mảnh dần khi bút đi nhanh hơn. Mực được vẽ vào một bitmap offscreen nên xuất ảnh gần như tức thì.

Bạn chỉ render một component, <SignatureInk />, và điều khiển nó qua một ref có type.

Nền tảng và kiến trúc ​

Hỗ trợ
iOSCó (Swift, PencilKit)
AndroidCó (Kotlin), API 24+
New Architecture (Fabric)Bắt buộc. Component là một Fabric view sinh bằng codegen.
ExpoDevelopment build và expo prebuild. Không chạy trên Expo Go.
WebKhông. Package chỉ dành cho native.

Bạn làm được gì ​

Tính năngỞ đâu
Màu bút, khoảng độ dày, nền, đường kẻ ký tênProps
Undo, redo, xoá, copy, replay, xuất ảnh từ codePhương thức qua ref
Toolbar native với nút tuỳ chỉnh và menu overflowToolbar
Bắt sự kiện nét vẽ, thay đổi, tiến độ replay và lần chạm toolbarSự kiện
PNG, JPEG, SVG, clipboard, thư viện ảnhĐịnh dạng xuất
Lưu và khôi phục nét vẽ, phát lại animationDữ liệu nét vẽ và replay
Chỉ nhận Apple Pencil hoặc bút stylusProps
Tool picker và loại mực PencilKit (iOS)Props

Các phần ghép với nhau thế nào ​

text
<SignatureInk ref={ref} />          props và callback của bạn
        │
        ▼
SignatureInkView (Fabric codegen)   một native view, không có native module
        │
        ├─ iOS: PKCanvasView, toolbar, baseline, xuất ảnh
        └─ Android: canvas velocity-Bezier, toolbar, baseline, xuất ảnh

Các phương thức qua ref như toBase64() được gửi xuống native view dưới dạng command. Kết quả trả về qua một sự kiện nội bộ duy nhất và resolve Promise bạn đang await, nên không có gì chặn JS thread trong lúc bạn vẽ.

Hai component ​

  • SignatureInk là component bạn nên dùng. Nó cung cấp ref API, kết quả dạng Promise và payload sự kiện dễ dùng.
  • SignatureInkView là component codegen thô bên dưới. Nó nhận tên prop phía native như inkBackgroundColor và toolbarItemsJson và không có Promise API. Chỉ dùng khi bạn muốn tự điều khiển view. Xem API reference.

Bước tiếp theo ​

Ghi công ​

Renderer Android là bản port của gcacace/android-signaturepad và phiên bản kế nhiệm warting/android-signaturepad, vốn dùng cách tiếp cận "Smoother Signatures".

Phát hành theo giấy phép MIT.