开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (1)
标签 (1)
master
v4.12.27
master
分支 (1)
标签 (1)
master
v4.12.27
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (1)
标签 (1)
master
v4.12.27
O2OA
/
o2ios
/
O2Platform
/
common
/
O2UISignatureView.swift
O2OA
/
o2ios
/
O2Platform
/
common
/
O2UISignatureView.swift
O2UISignatureView.swift 3.55 KB
一键复制 编辑 原始数据 按行查看 历史
O2LEE 提交于 2019年01月04日 14:42 +08:00 . 提交移动端源码
//
// O2UISignatureView.swift
// O2Platform
//
// Created by FancyLou on 2018年8月28日.
// Copyright © 2018 zoneland. All rights reserved.
//
import UIKit
import CocoaLumberjack
class O2UISignatureView: UIView {
//MARK: - arguments
var control: Int!
var beizerPath: UIBezierPath!
var points:[CGPoint] = [CGPoint](repeating: CGPoint(), count: 5)
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.initArguments()
}
override init(frame: CGRect) {
super.init(frame: frame)
self.initArguments()
}
private func initArguments() {
self.backgroundColor = UIColor.white //背景颜色
self.isMultipleTouchEnabled = false
self.beizerPath = UIBezierPath()
self.beizerPath.lineWidth = 2
}
override func draw(_ rect: CGRect) {
let color = UIColor.black
color.setStroke()
self.beizerPath.stroke()
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.control = 0
if let point = touches.first?.location(in: self) {
points[0] = point
let startPoint = points[0]
let endPoint = CGPoint(x: startPoint.x + 1.5, y: startPoint.y + 2)
self.beizerPath.move(to: startPoint)
self.beizerPath.addLine(to: endPoint)
}
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
if let point = touches.first?.location(in: self) {
self.control = self.control + 1
points[self.control] = point
if self.control == 4 {
points[3] = CGPoint(x: (points[2].x + points[4].x)/2.0, y: (points[2].y + points[4].y)/2.0)
//设置画笔起始点
self.beizerPath.move(to: points[0])
//endPoint终点 controlPoint1、controlPoint2控制点
self.beizerPath.addCurve(to: points[3], controlPoint1: points[1], controlPoint2: points[2])
//setNeedsDisplay会自动调用drawRect方法,这样可以拿到UIGraphicsGetCurrentContext,就可以画画了
self.setNeedsDisplay()
points[0] = points[3]
points[1] = points[4]
self.control = 1
}
}
}
// 设置笔粗细
func setLineSize(lineSize: CGFloat) {
DDLogDebug("line size : \(lineSize)")
self.beizerPath.lineWidth = lineSize
}
// 清除内容
func clearSignature() {
self.beizerPath.removeAllPoints()
self.setNeedsDisplay()
DDLogDebug("is empty: \(self.beizerPath.isEmpty)")
}
// 生成签名图片
func getSignatureImage() -> UIImage? {
if self.beizerPath.isEmpty {
return nil
}
UIGraphicsBeginImageContextWithOptions(self.bounds.size, false, UIScreen.main.scale)
self.layer.render(in: UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
if image != nil {
let documentsURL = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask)[0]
let fileURL = documentsURL.appendingPathComponent("signature.png")
do {
try image?.pngData()?.write(to: fileURL, options: .atomic)
}catch {
DDLogError("写入本地异常,\(error.localizedDescription)")
}
return image!
}else {
return nil
}
}
}
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

O2OA是一款Java开源企业信息化建设平台,包括流程管理、门户管理、信息管理、数据管理和服务管理五大平台,可以大大减化企业信息化建设成本和业务应用开发难度。
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/itcode-itcode/O2OA.git
git@gitee.com:itcode-itcode/O2OA.git
itcode-itcode
O2OA
O2OA
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /