Câu hỏi:

// // 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!


Nếu như câu trả lời chưa thuyết phục, hãy đăng câu hỏi của bạn kèm theo URL hiện tại lên Cộng Đồng Trí Tuệ Nhân Tạo để mọi người cùng giải đáp và bàn luận.
Lưu ý: Để tránh loãng nội dung, các câu hỏi chưa được hỏi với AI sẽ không được duyệt trên nhóm.
Trang chủ | Hỏi tiếp | Xem lịch sử