【问题标题】:Implementing a favorite button in iOS在 iOS 中实现收藏按钮
【发布时间】:2018-11-04 02:09:09
【问题描述】:

我正在尝试在应用程序中实现一个收藏按钮,这是我的尝试。这是我目前拥有的:

let favoriteButton: UIButton = {
    let button = UIButton(type: .custom)
    var emptyHeartImg = UIImage(named: "emptyheart")
    var fullHeartImg = UIImage(named: "fullheart")
    emptyHeartImg = emptyHeartImg?.maskWithColor(color: UIColor(r: 128, g: 171, b: 103))
    fullHeartImg = fullHeartImg?.maskWithColor(color: UIColor(r: 128, g: 171, b: 103))
    let imageView = UIImageView(image: emptyHeartImg, highlightedImage: fullHeartImg)
    imageView.contentMode = .scaleAspectFill
    button.setImage(imageView.image, for: .normal)
    button.addTarget(self, action: #selector(handleFavorite), for: .touchUpInside)
    return button
}()

@objc private func handleFavorite() {
    if (favoriteButton.imageView?.isHighlighted)! == false {
        favoriteButton.imageView?.isHighlighted = true
    } else {
        favoriteButton.imageView?.isHighlighted = false
    }
}

目前这不会根据需要更改图像。实现收藏按钮的任何提示或替代方法?

【问题讨论】:

    标签: ios swift uibutton uiimageview


    【解决方案1】:

    我会使用UIButton.isSelected 而不是 imageView 的高亮状态。我不确定UIImageView,但按钮的isHighlighted 仅在它们被主动触摸时,而不是持久状态。请参阅标有 ​​* 的行:

    let favoriteButton: UIButton = {
        let button = UIButton(type: .custom)
        var emptyHeartImg = UIImage(named: "emptyheart")
        var fullHeartImg = UIImage(named: "fullheart")
        emptyHeartImg = emptyHeartImg?.maskWithColor(color: UIColor(r: 128, g: 171, b: 103))
        fullHeartImg = fullHeartImg?.maskWithColor(color: UIColor(r: 128, g: 171, b: 103))
        **button.setImage(emptyHeartImg, for: .normal)
        **button.setImage(fullHeartImg, for: .selected)
        **button.imageView?.contentMode = .scaleAspectFill
        button.addTarget(self, action: #selector(handleFavorite), for: .touchUpInside)
        return button
    }()
    

    然后在你的处理程序中:

    favoriteButton.isSelected = !favoriteButton.isSelected
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-17
      • 1970-01-01
      • 2013-04-14
      相关资源
      最近更新 更多