mirror of https://github.com/oxen-io/session-ios
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			81 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Swift
		
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Swift
		
	
| //
 | |
| //  Copyright (c) 2019 Open Whisper Systems. All rights reserved.
 | |
| //
 | |
| 
 | |
| import Foundation
 | |
| 
 | |
| @objc
 | |
| public class VoiceMemoLockView: UIView {
 | |
| 
 | |
|     private var offsetConstraint: NSLayoutConstraint!
 | |
| 
 | |
|     private let offsetFromToolbar: CGFloat = 40
 | |
|     private let backgroundViewInitialHeight: CGFloat = 80
 | |
|     private var chevronTravel: CGFloat {
 | |
|         return -1 * (backgroundViewInitialHeight - 50)
 | |
|     }
 | |
| 
 | |
|     @objc
 | |
|     public override init(frame: CGRect) {
 | |
|         super.init(frame: frame)
 | |
|         addSubview(backgroundView)
 | |
|         backgroundView.addSubview(lockIconView)
 | |
|         backgroundView.addSubview(chevronView)
 | |
| 
 | |
|         layoutMargins = UIEdgeInsets(top: 0, leading: 0, bottom: offsetFromToolbar, trailing: 0)
 | |
| 
 | |
|         backgroundView.autoPinEdges(toSuperviewMarginsExcludingEdge: .bottom)
 | |
|         self.offsetConstraint = backgroundView.autoPinEdge(toSuperviewMargin: .bottom)
 | |
|         // we anchor the top so that the bottom "slides up" to meet it as the user slides the lock
 | |
|         backgroundView.autoPinEdge(.top, to: .bottom, of: self, withOffset: -offsetFromToolbar - backgroundViewInitialHeight)
 | |
| 
 | |
|         backgroundView.layoutMargins = UIEdgeInsets(top: 6, leading: 6, bottom: 6, trailing: 6)
 | |
| 
 | |
|         lockIconView.autoPinEdges(toSuperviewMarginsExcludingEdge: .bottom)
 | |
|         chevronView.autoPinEdges(toSuperviewMarginsExcludingEdge: .top)
 | |
|     }
 | |
| 
 | |
|     required init?(coder aDecoder: NSCoder) {
 | |
|         fatalError("init(coder:) has not been implemented")
 | |
|     }
 | |
| 
 | |
|     // MARK: -
 | |
| 
 | |
|     @objc
 | |
|     public func update(ratioComplete: CGFloat) {
 | |
|         offsetConstraint.constant = CGFloatLerp(0, chevronTravel, ratioComplete)
 | |
|     }
 | |
| 
 | |
|     // MARK: - Subviews
 | |
| 
 | |
|     private lazy var lockIconView: UIImageView = {
 | |
|         let imageTemplate = #imageLiteral(resourceName: "ic_lock_outline").withRenderingMode(.alwaysTemplate)
 | |
|         let imageView = UIImageView(image: imageTemplate)
 | |
|         imageView.tintColor = Colors.destructive
 | |
|         imageView.autoSetDimensions(to: CGSize(width: 24, height: 24))
 | |
|         return imageView
 | |
|     }()
 | |
| 
 | |
|     private lazy var chevronView: UIView = {
 | |
|         let label = UILabel()
 | |
|         label.text = "\u{2303}"
 | |
|         label.textColor = Colors.destructive
 | |
|         label.textAlignment = .center
 | |
|         return label
 | |
|     }()
 | |
| 
 | |
|     private lazy var backgroundView: UIView = {
 | |
|         let view = UIView()
 | |
| 
 | |
|         let width: CGFloat = 36
 | |
|         view.autoSetDimension(.width, toSize: width)
 | |
|         view.backgroundColor = Colors.composeViewBackground
 | |
|         view.layer.cornerRadius = width / 2
 | |
|         view.layer.borderColor = Colors.text.withAlphaComponent(Values.lowOpacity).cgColor
 | |
|         view.layer.borderWidth = Values.composeViewTextFieldBorderThickness
 | |
| 
 | |
|         return view
 | |
|     }()
 | |
| 
 | |
| }
 |