123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- //
- // CPDFOpacitySliderView.swift
- // ComPDFKit_Tools
- //
- // Copyright © 2014-2024 PDF Technologies, Inc. All Rights Reserved.
- //
- // THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
- // AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
- // UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
- // This notice may not be removed from this file.
- //
- import UIKit
- @objc protocol CPDFOpacitySliderViewDelegate: AnyObject {
- @objc optional func opacitySliderView(_ opacitySliderView: CPDFOpacitySliderView, opacity: CGFloat)
- }
- class CPDFOpacitySliderView: UIView {
-
- weak var delegate: CPDFOpacitySliderViewDelegate?
-
- var titleLabel:UILabel?
- var opacitySlider:UISlider?
- var startLabel:UILabel?
- var leftMargin:CGFloat = 0
- var rightMargin:CGFloat = 0
- var rightTitleMargin:CGFloat = 0
- var sliderCount:Int = 0
-
- var bgColor: UIColor? {
- didSet {
- backgroundColor = bgColor
- }
- }
-
- var defaultValue: CGFloat = 0 {
- didSet {
- opacitySlider?.value = Float(defaultValue)
- startLabel?.text = "\(Int((defaultValue/1)*100))%"
- }
- }
-
- override init(frame: CGRect) {
- super.init(frame: frame)
-
- titleLabel = UILabel()
- titleLabel?.autoresizingMask = .flexibleRightMargin
- titleLabel?.text = NSLocalizedString("Opacity", comment: "")
- titleLabel?.textColor = .gray
- titleLabel?.font = UIFont.systemFont(ofSize: 12.0)
- addSubview(titleLabel!)
-
- opacitySlider = UISlider()
- opacitySlider?.autoresizingMask = .flexibleWidth
- opacitySlider?.value = 1
- opacitySlider?.maximumValue = 1
- opacitySlider?.minimumValue = 0
- opacitySlider?.addTarget(self, action: #selector(buttonItemClicked_changes(_:)), for: .valueChanged)
- addSubview(opacitySlider!)
-
- startLabel = UILabel()
- startLabel?.layer.borderWidth = 1.0
- startLabel?.textAlignment = .center
- startLabel?.layer.borderColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.1).cgColor
- startLabel?.autoresizingMask = .flexibleRightMargin
- startLabel?.textColor = CPDFColorUtils.CPageEditToolbarFontColor()
- addSubview(startLabel!)
-
- sliderCount = 10
- leftMargin = 0
- rightMargin = 0
- rightTitleMargin = 0
-
- backgroundColor = CPDFColorUtils.CAnnotationSampleBackgoundColor()
- }
-
- required init?(coder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
-
- override func layoutSubviews() {
- super.layoutSubviews()
-
- titleLabel?.frame = CGRect(x: 20 - rightTitleMargin, y: 0, width: frame.size.width, height: frame.size.height/2)
- opacitySlider?.frame = CGRect(x: 20 - leftMargin, y: frame.size.height/2, width: frame.size.width - 130 + leftMargin + rightMargin, height: frame.size.height/2)
- startLabel?.frame = CGRect(x: frame.size.width - 100 + rightMargin, y: frame.size.height/2 + 7.5, width: 80, height: frame.size.height/2 - 15)
- }
-
- // MARK: - Action
- @objc func buttonItemClicked_changes(_ button: UISlider) {
-
- NSObject.cancelPreviousPerformRequests(withTarget: self, selector: #selector(updateNewAppearanceStream), object: button)
- perform(#selector(updateNewAppearanceStream), with: button, afterDelay: 0.2)
- }
-
- @objc func updateNewAppearanceStream(_ button: UISlider) {
- startLabel?.text = "\(Int((button.value/1)*100))%"
- self.delegate?.opacitySliderView?(self, opacity: CGFloat(button.value))
- }
-
- }
|