CPDFOpacitySliderView.swift 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. //
  2. // CPDFOpacitySliderView.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 CPDFOpacitySliderViewDelegate: AnyObject {
  14. @objc optional func opacitySliderView(_ opacitySliderView: CPDFOpacitySliderView, opacity: CGFloat)
  15. }
  16. class CPDFOpacitySliderView: UIView {
  17. weak var delegate: CPDFOpacitySliderViewDelegate?
  18. var titleLabel:UILabel?
  19. var opacitySlider:UISlider?
  20. var startLabel:UILabel?
  21. var leftMargin:CGFloat = 0
  22. var rightMargin:CGFloat = 0
  23. var rightTitleMargin:CGFloat = 0
  24. var sliderCount:Int = 0
  25. var bgColor: UIColor? {
  26. didSet {
  27. backgroundColor = bgColor
  28. }
  29. }
  30. var defaultValue: CGFloat = 0 {
  31. didSet {
  32. opacitySlider?.value = Float(defaultValue)
  33. startLabel?.text = "\(Int((defaultValue/1)*100))%"
  34. }
  35. }
  36. override init(frame: CGRect) {
  37. super.init(frame: frame)
  38. titleLabel = UILabel()
  39. titleLabel?.autoresizingMask = .flexibleRightMargin
  40. titleLabel?.text = NSLocalizedString("Opacity", comment: "")
  41. titleLabel?.textColor = .gray
  42. titleLabel?.font = UIFont.systemFont(ofSize: 12.0)
  43. addSubview(titleLabel!)
  44. opacitySlider = UISlider()
  45. opacitySlider?.autoresizingMask = .flexibleWidth
  46. opacitySlider?.value = 1
  47. opacitySlider?.maximumValue = 1
  48. opacitySlider?.minimumValue = 0
  49. opacitySlider?.addTarget(self, action: #selector(buttonItemClicked_changes(_:)), for: .valueChanged)
  50. addSubview(opacitySlider!)
  51. startLabel = UILabel()
  52. startLabel?.layer.borderWidth = 1.0
  53. startLabel?.textAlignment = .center
  54. startLabel?.layer.borderColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.1).cgColor
  55. startLabel?.autoresizingMask = .flexibleRightMargin
  56. startLabel?.textColor = CPDFColorUtils.CPageEditToolbarFontColor()
  57. addSubview(startLabel!)
  58. sliderCount = 10
  59. leftMargin = 0
  60. rightMargin = 0
  61. rightTitleMargin = 0
  62. backgroundColor = CPDFColorUtils.CAnnotationSampleBackgoundColor()
  63. }
  64. required init?(coder: NSCoder) {
  65. fatalError("init(coder:) has not been implemented")
  66. }
  67. override func layoutSubviews() {
  68. super.layoutSubviews()
  69. titleLabel?.frame = CGRect(x: 20 - rightTitleMargin, y: 0, width: frame.size.width, height: frame.size.height/2)
  70. opacitySlider?.frame = CGRect(x: 20 - leftMargin, y: frame.size.height/2, width: frame.size.width - 130 + leftMargin + rightMargin, height: frame.size.height/2)
  71. startLabel?.frame = CGRect(x: frame.size.width - 100 + rightMargin, y: frame.size.height/2 + 7.5, width: 80, height: frame.size.height/2 - 15)
  72. }
  73. // MARK: - Action
  74. @objc func buttonItemClicked_changes(_ button: UISlider) {
  75. NSObject.cancelPreviousPerformRequests(withTarget: self, selector: #selector(updateNewAppearanceStream), object: button)
  76. perform(#selector(updateNewAppearanceStream), with: button, afterDelay: 0.2)
  77. }
  78. @objc func updateNewAppearanceStream(_ button: UISlider) {
  79. startLabel?.text = "\(Int((button.value/1)*100))%"
  80. self.delegate?.opacitySliderView?(self, opacity: CGFloat(button.value))
  81. }
  82. }