// // UserDetailsController.swift // SwipeMatch // // Created by PhuongDo on 23/11/2023. //
import UIKit import SDWebImage
class UserDetailsController: UIViewController, UIScrollViewDelegate {
var cardViewModel: CardViewModel! {
didSet{
infoLabel.attributedText = cardViewModel.attributedString
guard let image1Url = cardViewModel.imageNames.first, let url = URL(string: image1Url) else { return }
imageView.sd_setImage(with: url)
}
}
// layout instances
lazy var scrollView: UIScrollView = {
let scrollView = UIScrollView()
scrollView.backgroundColor = .systemBackground
scrollView.alwaysBounceVertical = true
scrollView.delegate = self
return scrollView
}()
let imageView: UIImageView = {
let iv = UIImageView(image: #imageLiteral(resourceName: "jane3"))
iv.contentMode = .scaleAspectFill
iv.clipsToBounds = true
return iv
}()
let infoLabel: UILabel = {
let label = UILabel()
label.numberOfLines = 0
return label
}()
let dismissButton: UIButton = {
let button = UIButton()
button.setImage(UIImage(named: "down_icon")!.withRenderingMode(.alwaysOriginal) , for: .normal)
button.addTarget(self, action: #selector(handleTapDismiss), for: .touchUpInside)
return button
}()
//Create button bar
fileprivate func createButton(image: UIImage, selector: Selector) -> UIButton{
let button = UIButton(type:.system)
button.setImage(image.withRenderingMode(.alwaysOriginal), for: .normal)
button.addTarget(self, action: selector, for: .touchUpInside)
button.imageView?.contentMode = .scaleAspectFill
return button
}
lazy var dislikeButton = self.createButton(image: #imageLiteral(resourceName: "dismiss_circle"), selector: #selector(handleDislike))
@objc fileprivate func handleDislike(){
}
lazy var likeButton = self.createButton(image: #imageLiteral(resourceName: "super_like_circle"), selector: #selector(handleLike))
@objc fileprivate func handleLike(){
}
lazy var superLikeButton = self.createButton(image: #imageLiteral(resourceName: "like_circle"), selector: #selector(handleSuperLike))
@objc fileprivate func handleSuperLike(){
}
override func viewDidLoad() {
super.viewDidLoad()
setupLayout()
setupVisualBlurEffectView()
setupBottomControl()
}
fileprivate func setupVisualBlurEffectView(){
let blurEffect = UIBlurEffect(style: .regular)
let visualEffectView = UIVisualEffectView(effect: blurEffect)
view.addSubview(visualEffectView)
visualEffectView.anchor(top: view.topAnchor, leading: view.leadingAnchor, bottom: view.safeAreaLayoutGuide.topAnchor, trailing: view.trailingAnchor)
}
fileprivate func setupLayout() {
view.addSubview(scrollView)
scrollView.fillSuperview()
scrollView.addSubview(imageView)
imageView.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.width)
scrollView.addSubview(infoLabel)
infoLabel.anchor(top: imageView.bottomAnchor, leading: scrollView.leadingAnchor, bottom: nil, trailing: scrollView.trailingAnchor, padding: .init(top: 16, left: 16, bottom: 0, right: 16))
scrollView.addSubview(dismissButton)
dismissButton.anchor(top: imageView.bottomAnchor, leading: nil, bottom: nil, trailing: view.trailingAnchor, padding: .init(top: -35, left: 0, bottom: 0, right: 35), size: .init(width: 70, height: 70))
}
fileprivate func setupBottomControl(){
let stackView = UIStackView(arrangedSubviews: [dislikeButton, likeButton, superLikeButton])
view.addSubview(stackView)
stackView.distribution = .fillEqually
stackView.axis = .horizontal
stackView.anchor(top: nil, leading: nil, bottom: view.safeAreaLayoutGuide.bottomAnchor, trailing: nil, padding: .init(top: 0, left: 0, bottom: 50 , right: 0), size: .init(width: 300, height: 80))
stackView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
}
@objc fileprivate func handleTapDismiss(){
self.dismiss(animated: true)
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let changeY = scrollView.contentOffset.y
var width = view.frame.width - changeY * 2
width = max(view.frame.width, width)
imageView.frame = CGRect(x: min(0, changeY), y: min(0, changeY), width: width, height: width)
}
}
Nếu bạn đang cảm thấy hứng thú với việc kết bạn qua một ứng dụng, không nên quên rằng tình bạn là một bức tranh đa sắc, không chỉ xám xịt như màn hình của bạn trước khi áp dụng hiệu ứng blur sau một cuộc gặp không mấy mỹ mãn. Còn nếu bạn muốn thắp sáng gam màu tình bạn của mình thêm một chút công nghệ, hãy để AI làm điều đó! Nhưng nhớ là, sau mỗi lần swipe, không phải lúc nào cũng chỉ gặp những người bạn 'like' - đôi khi, bạn sẽ phải nhấn vào biểu tượng 'dislike', như trong đoạn code trên.
Và bạn biết không, trituenhantao.io cũng giống như một nơi hẹn hò trí tuệ! Bạn có thể tiếp cận với những thông minh nhân tạo và công nghệ mới mẻ, mà không phải lo lắng về việc 'swipe left' hay 'swipe right'. Thêm vào đó, bạn có thể thảo luận về những điều kỳ diệu này mà không phải lo sợ về một 'super like' tình cờ nào đó. Đừng quên ghé thăm trituenhantao.io để khám phá thêm về AI, bạn nhé. Ai biết được, bạn có thể sẽ phải 'super like' trí tuệ nhân tạo sau chuyến thăm đó!
P.S.: Nếu bạn cần tôi 'swipe left' trên những lỗi bug hay 'swipe right' cho những lời khuyên hữu ích về code trên, cứ thoải mái hỏi. Tôi ở đây để giữ cho cuộc phiêu lưu lập trình của bạn trôi chảy!