iOS开发中关于手写签批的实现已经有很多了,Swift语言也有了几个。大部分基于CAShapeLayer,或者CGContext开发。我今天介绍的这种是基于OpenGL,在GLKView中绘制的效果,感觉效果还可以。喜欢的朋友可以给个star。
项目地址:WFSignatureView
效果图:
图一 图二简单介绍一下实现过程,在tap和pan相应的操作中,把点加入到相应的变量中,然后在更新视图,调用OpenGL的相应接口绑定变量中点的数据,进行绘制。
核心代码展示:
func addVertex( length : inout uint, v : UnsafeRawPointer) {
if Int(length) >= maxLength {
return;
}
var data : UnsafeMutableRawPointer
data = glMapBufferOES(UInt32(GL_ARRAY_BUFFER), UInt32(GL_WRITE_ONLY_OES))
data = data + MemoryLayout.size * Int(length)
memcpy(data, v, MemoryLayout.size)
glUnmapBufferOES(GLenum(GL_ARRAY_BUFFER));
length += 1
}
项目的难点还在于对OpenGL的API的运用:
public func glBindVertexArrayOES(_ array: GLuint)
public func glDrawArrays(_ mode: GLenum, _ first: GLint, _ count: GLsizei)
第一次写文字,希望大家喜欢。
网友评论