123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- //
- // WaterMarkView.swift
- // O2Platform
- //
- // Created by FancyLou on 2022/3/30.
- // Copyright © 2022 zoneland. All rights reserved.
- //
- import UIKit
- import CocoaLumberjack
- ///
- /// 水印
- /// 这个view 是一个很大的正方形,目前是SCREEN_HEIGHT的3倍宽高
- /// 里面放一个tableview 把水印文字放入到tableview中
- /// 最后把这个水印的整个view放到页面上,并且旋转角度 并裁减超出部分
- ///使用: let waterView = WaterMarkView.addWaterMarkView(waterMarkText: "你的姓名")
- /// self.view.addSubview(waterView)
- /// self.view.layer.masksToBounds = true // 裁剪 因为水印是一个很大的view
- class WaterMarkView: UIView {
-
-
-
-
- // private var waterMarkView: WaterMarkView?
- //
- // open func addWaterMark(view: UIView, waterMarkText: String) {
- //
- // if waterMarkView == nil {
- // waterMarkView = WaterMarkView()
- // waterMarkView?.frame = view.bounds
- // if let wlayer = waterMarkView?.layer {
- // view.layer.addSublayer(wlayer)
- // }
- // waterMarkView?.isUserInteractionEnabled = false
- // }
- // }
- //
- // // 添加文本水印
- // private func watemarkWithText(waterMarkText: String) -> UIImage? {
- // let attributes = [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 14.0)]
- // let size = waterMarkText.getSize(with: 14.0)
- // UIGraphicsBeginImageContextWithOptions(size, false, 0)
- // waterMarkText.draw(in: CGRect(x: 0, y: 0, width: size.width, height: size.height), withAttributes: attributes)
- // let image = UIGraphicsGetImageFromCurrentImageContext()
- // UIGraphicsEndImageContext()
- // return image
- // }
-
-
- private var tableView: UITableView? = nil
- private var waterMarkText: String = ""
- private var dataSource: [String] = []
-
- public static let lineHeight:Int = 48 // 行高
- let cellIdentifier = "WaterMarkTableViewCell"
-
-
- static func addWaterMarkView(waterMarkText: String) -> WaterMarkView {
- let watermarkView = WaterMarkView(frame: CGRect(x: -SCREEN_HEIGHT, y: -SCREEN_HEIGHT, width: SCREEN_HEIGHT*3, height: SCREEN_HEIGHT*3), waterMarkText: waterMarkText)
- watermarkView.transform = CGAffineTransform(rotationAngle: -Double.pi*0.25)
- watermarkView.isUserInteractionEnabled = false
- return watermarkView
- }
-
-
- init(frame: CGRect, waterMarkText: String) {
- super.init(frame: frame)
- self.backgroundColor = .clear
- self.waterMarkText = waterMarkText
- self.setupUI()
- }
-
- required init?(coder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
-
-
- override func layoutSubviews() {
- super.layoutSubviews()
- self.tableView?.frame = CGRect(x: 0, y: 0, width: self.frame.size.width, height: self.frame.size.height)
- }
-
- private func setupUI() {
- if self.tableView == nil {
- self.tableView = UITableView(frame: CGRect(x: 0, y: 0, width: self.frame.size.width, height: self.frame.size.height), style: .grouped)
- self.addSubview(self.tableView!)
- self.tableView?.estimatedRowHeight = 0
- self.tableView?.estimatedSectionHeaderHeight = 0
- self.tableView?.estimatedSectionFooterHeight = 0
- self.tableView?.showsVerticalScrollIndicator = false
- self.tableView?.separatorStyle = .none
- self.tableView?.backgroundColor = .clear
- self.tableView?.isUserInteractionEnabled = false
- }
- self.tableView?.register(WaterMarkTableViewCell.self, forCellReuseIdentifier: cellIdentifier)
- self.tableView?.delegate = self
- self.tableView?.dataSource = self
- self.loadDataSource()
- DDLogDebug("setup ui .......\(self.tableView == nil)")
- }
-
-
- private func loadDataSource() {
-
- for i in 0...Int(Int(Float(SCREEN_HEIGHT))*3/WaterMarkView.lineHeight) {
- var str = ""
- for _ in 0...50 {
- str += " \(self.waterMarkText)"
- }
- if (i % 2 == 0) {
- self.dataSource.append(str)
- } else {
- self.dataSource.append(" \(str)")
- }
- }
- self.tableView?.reloadData()
- }
- }
- extension WaterMarkView: UITableViewDelegate, UITableViewDataSource {
- func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
- return self.dataSource.count
- }
-
-
- func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
- DDLogDebug("cell...........")
- if let c = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as? WaterMarkTableViewCell {
- c.setText(text: self.dataSource[indexPath.row])
- c.selectionStyle = .none
- c.isUserInteractionEnabled = false
- return c
- }
- return UITableViewCell()
- }
-
- func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
- return CGFloat(WaterMarkView.lineHeight)
- }
-
-
-
- }
|