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.
		
		
		
		
		
			
		
			
				
	
	
		
			107 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Swift
		
	
			
		
		
	
	
			107 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Swift
		
	
| // Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
 | |
| 
 | |
| import UIKit
 | |
| import YYImage
 | |
| import SessionUIKit
 | |
| 
 | |
| /// Shown when the user taps a profile picture in the conversation settings.
 | |
| final class ProfilePictureVC: BaseVC {
 | |
|     private let image: UIImage?
 | |
|     private let animatedImage: YYImage?
 | |
|     private let snTitle: String
 | |
|     
 | |
|     private var imageSize: CGFloat { (UIScreen.main.bounds.width - (2 * Values.largeSpacing)) }
 | |
|     
 | |
|     // MARK: - UI
 | |
|     
 | |
|     private lazy var fallbackView: UIView = {
 | |
|         let result: UIView = UIView()
 | |
|         result.clipsToBounds = true
 | |
|         result.themeBackgroundColor = .backgroundSecondary
 | |
|         result.layer.cornerRadius = (imageSize / 2)
 | |
|         result.isHidden = (
 | |
|             image != nil ||
 | |
|             animatedImage != nil
 | |
|         )
 | |
|         result.set(.width, to: imageSize)
 | |
|         result.set(.height, to: imageSize)
 | |
|         
 | |
|         return result
 | |
|     }()
 | |
|     
 | |
|     private lazy var imageView: UIImageView = {
 | |
|         let result: UIImageView = UIImageView(image: image)
 | |
|         result.clipsToBounds = true
 | |
|         result.contentMode = .scaleAspectFill
 | |
|         result.layer.cornerRadius = (imageSize / 2)
 | |
|         result.isHidden = (image == nil)
 | |
|         result.set(.width, to: imageSize)
 | |
|         result.set(.height, to: imageSize)
 | |
|         
 | |
|         return result
 | |
|     }()
 | |
|     
 | |
|     private lazy var animatedImageView: YYAnimatedImageView = {
 | |
|         let result: YYAnimatedImageView = YYAnimatedImageView(image: animatedImage)
 | |
|         result.clipsToBounds = true
 | |
|         result.contentMode = .scaleAspectFill
 | |
|         result.layer.cornerRadius = (imageSize / 2)
 | |
|         result.isHidden = (animatedImage == nil)
 | |
|         result.set(.width, to: imageSize)
 | |
|         result.set(.height, to: imageSize)
 | |
|         
 | |
|         return result
 | |
|     }()
 | |
|     
 | |
|     // MARK: - Initialization
 | |
|     
 | |
|     init(image: UIImage?, animatedImage: YYImage?, title: String) {
 | |
|         self.image = image
 | |
|         self.animatedImage = animatedImage
 | |
|         self.snTitle = title
 | |
|         
 | |
|         super.init(nibName: nil, bundle: nil)
 | |
|     }
 | |
|     
 | |
|     override init(nibName: String?, bundle: Bundle?) {
 | |
|         preconditionFailure("Use init(image:) instead.")
 | |
|     }
 | |
|     
 | |
|     required init?(coder: NSCoder) {
 | |
|         preconditionFailure("Use init(coder:) instead.")
 | |
|     }
 | |
|     
 | |
|     override func viewDidLoad() {
 | |
|         view.themeBackgroundColor = .backgroundPrimary
 | |
|         
 | |
|         setNavBarTitle(snTitle)
 | |
|         
 | |
|         // Close button
 | |
|         let closeButton = UIBarButtonItem(
 | |
|             image: #imageLiteral(resourceName: "X").withRenderingMode(.alwaysTemplate),
 | |
|             style: .plain,
 | |
|             target: self,
 | |
|             action: #selector(close)
 | |
|         )
 | |
|         closeButton.themeTintColor = .textPrimary
 | |
|         navigationItem.leftBarButtonItem = closeButton
 | |
|         
 | |
|         view.addSubview(fallbackView)
 | |
|         view.addSubview(imageView)
 | |
|         view.addSubview(animatedImageView)
 | |
|         
 | |
|         fallbackView.center(in: view)
 | |
|         imageView.center(in: view)
 | |
|         animatedImageView.center(in: view)
 | |
|         
 | |
|         // Gesture recognizer
 | |
|         let swipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: #selector(close))
 | |
|         swipeGestureRecognizer.direction = .down
 | |
|         view.addGestureRecognizer(swipeGestureRecognizer)
 | |
|     }
 | |
|     
 | |
|     @objc private func close() {
 | |
|         presentingViewController?.dismiss(animated: true, completion: nil)
 | |
|     }
 | |
| }
 |