在 iOS 中实现收藏按钮
Posted
技术标签:
【中文标题】在 iOS 中实现收藏按钮【英文标题】:Implementing a favorite button in 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
目前这不会根据需要更改图像。实现收藏按钮的任何提示或替代方法?
【问题讨论】:
【参考方案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
【讨论】:
以上是关于在 iOS 中实现收藏按钮的主要内容,如果未能解决你的问题,请参考以下文章