如何从按钮外部调用 UIButton 图像上的 UIView 转换?

Posted

技术标签:

【中文标题】如何从按钮外部调用 UIButton 图像上的 UIView 转换?【英文标题】:How to call UIView transition on a UIButton image from outside the button? 【发布时间】:2019-01-24 19:17:56 【问题描述】:

我希望从按钮的内部和外部都调用此UIView 转换。每当我在with: 之后尝试除sender 以外的任何东西时,我都会收到Cannot convert vale to.... 错误。有没有办法做到这一点?谢谢!

@IBOutlet weak var someButton: UIButton!       
@IBAction func someButton(_ sender: UIButton) 

UIView.transition(with: sender, duration: 0.3, options: .transitionCrossDissolve, animations: 
    sender.setImage(UIImage(named: "My Image.png"), for: UIControl.State.highlighted)
, completion: nil)

//...other functions


【问题讨论】:

不清楚你在问什么。您能否添加您收到的完整错误消息并在代码中显示错误发生的位置? 感谢@ScottThompson 的提问!当我研究更具体的案例来证明错误时,我找到了答案。 【参考方案1】:

把它做成这样的函数

func animation(sender: UIButton)
    UIView.transition(with: sender, duration: 0.3, options: .transitionCrossDissolve, animations: 
        sender.setImage(UIImage(named: "image.png"), for: .highlighted)
    , completion: nil)

点击按钮或任何其他位置调用它:

animation(sender: sender)

【讨论】:

【参考方案2】:

您可以通过创建如下所示的单独函数来使用 firebase 调用或其他一些事件操作来转换 UIButton。使用UIButtonoutlet 访问该按钮。

@IBOutlet weak var someButton: UIButton!

func buttonTransition() 

    UIView.transition(with: sender, duration: 0.3, options: .transitionCrossDissolve, animations: 
        someButton.setImage(UIImage(named: "My Image.png"), for: UIControl.State.highlighted)
    , completion: nil)

所以,您可以从任何地方调用buttonTransition() 函数。

【讨论】:

【参考方案3】:

我想通了;将with: 分配给 UIButton 时,我没有使用 ViewController 名称:

UIView.transition(with: ViewController().buttonName,....

【讨论】:

以上是关于如何从按钮外部调用 UIButton 图像上的 UIView 转换?的主要内容,如果未能解决你的问题,请参考以下文章

UIButton 在滑动时选择

UIButton 上的图像

如何在导航栏上的 UIBarButtonItem 内偏移 UIButton 图像?

使用swift在背景图像上的uibutton文本

如何检测 UIButton 背景图像的变化?

为 UITableViewCell 上的特定按钮删除 UIButton 事件的链接