CPDFThicknessSliderView.swift 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. //
  2. // CPDFThicknessSliderView.swift
  3. // ComPDFKit_Tools
  4. //
  5. // Copyright © 2014-2024 PDF Technologies, Inc. All Rights Reserved.
  6. //
  7. // THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
  8. // AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
  9. // UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
  10. // This notice may not be removed from this file.
  11. //
  12. import UIKit
  13. @objc protocol CPDFThicknessSliderViewDelegate: AnyObject {
  14. @objc optional func thicknessSliderView(_ opacitySliderView: CPDFThicknessSliderView, thickness: CGFloat)
  15. }
  16. class CPDFThicknessSliderView: UIView {
  17. weak var delegate: CPDFThicknessSliderViewDelegate?
  18. var titleLabel:UILabel?
  19. var thicknessSlider:UISlider?
  20. var startLabel:UILabel?
  21. var endLabel:UILabel?
  22. var thick:Float = 0
  23. var leftMargin:CGFloat = 0
  24. var rightMargin:CGFloat = 0
  25. var leftTitleMargin:CGFloat = 0
  26. var sliderCount:Int = 0
  27. var defaultValue: CGFloat = 0 {
  28. didSet {
  29. thicknessSlider?.value = Float(defaultValue * 10)
  30. startLabel?.text = "\(Int(defaultValue * 100)) pt"
  31. }
  32. }
  33. override init(frame: CGRect) {
  34. super.init(frame: frame)
  35. self.titleLabel = UILabel()
  36. self.titleLabel?.text = NSLocalizedString("Thickeness", comment:"")
  37. self.titleLabel?.autoresizingMask = .flexibleRightMargin
  38. self.titleLabel?.textColor = UIColor.gray
  39. self.titleLabel?.font = UIFont.systemFont(ofSize: 12.0)
  40. self.addSubview(self.titleLabel!)
  41. self.thicknessSlider = UISlider()
  42. self.thicknessSlider?.autoresizingMask = .flexibleWidth
  43. self.thicknessSlider?.maximumValue = 10.0
  44. self.thicknessSlider?.minimumValue = 0.1
  45. self.thicknessSlider?.addTarget(self, action: #selector(buttonItemClicked_changes(_:)), for: .valueChanged)
  46. self.addSubview(self.thicknessSlider!)
  47. self.startLabel = UILabel()
  48. self.startLabel?.text = NSLocalizedString("10pt", comment:"")
  49. self.startLabel?.layer.borderWidth = 1.0
  50. self.startLabel?.textAlignment = .center
  51. self.startLabel?.layer.borderColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.1).cgColor
  52. self.startLabel?.autoresizingMask = .flexibleRightMargin
  53. self.startLabel?.textColor = CPDFColorUtils.CPageEditToolbarFontColor()
  54. self.addSubview(self.startLabel!)
  55. self.thick = 1
  56. self.sliderCount = 10
  57. self.leftTitleMargin = 0
  58. self.rightMargin = 0
  59. self.leftMargin = 0
  60. self.backgroundColor = CPDFColorUtils.CAnnotationSampleBackgoundColor()
  61. }
  62. required init?(coder: NSCoder) {
  63. fatalError("init(coder:) has not been implemented")
  64. }
  65. override func layoutSubviews() {
  66. super.layoutSubviews()
  67. self.titleLabel?.frame = CGRect(x: 20 - self.leftTitleMargin, y: 0, width: self.frame.size.width, height: self.frame.size.height/2)
  68. self.thicknessSlider?.frame = CGRect(x: 20 - self.leftMargin, y: self.frame.size.height/2, width: self.frame.size.width - 130 + self.leftMargin + self.rightMargin, height: self.frame.size.height/2)
  69. self.startLabel?.frame = CGRect(x: self.frame.size.width - 100 + self.rightMargin, y: self.frame.size.height/2 + 7.5, width: 80, height: self.frame.size.height/2 - 15)
  70. }
  71. // MARK: - Action
  72. @objc func buttonItemClicked_changes(_ button: UISlider) {
  73. NSObject.cancelPreviousPerformRequests(withTarget: self, selector: #selector(updateNewAppearanceStream), object: button)
  74. perform(#selector(updateNewAppearanceStream), with: button, afterDelay: 0.2)
  75. }
  76. @objc func updateNewAppearanceStream(_ button: UISlider) {
  77. self.startLabel?.text = String(format: "%.0f pt", button.value * self.thick)
  78. self.delegate?.thicknessSliderView?(self, thickness: CGFloat(button.value))
  79. }
  80. }