You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS骰子应用:点击摇骰按钮后如何实现视图淡入并立即恢复默认

解决方案

你的代码仅将视图透明度设置为0.5,但没有恢复至默认1.0的逻辑,导致视图始终保持半透明。要实现点击时的淡入效果,并在切换骰子图片后立即恢复透明度,需要借助UIKit的动画API完成平滑过渡。

以下是修改后的代码:

import UIKit

class ViewController: UIViewController {
    
    @IBOutlet weak var diceImageView1: UIImageView!
    @IBOutlet weak var diceImageView2: UIImageView!

    @IBAction func rollButtonPressed(_ sender: UIButton) {
        
        let diceArray = [#imageLiteral(resourceName: "DiceOne"), #imageLiteral(resourceName: "DiceTwo"), #imageLiteral(resourceName: "DiceThree"), #imageLiteral(resourceName: "DiceFour"), #imageLiteral(resourceName: "DiceFive"), #imageLiteral(resourceName: "DiceSix")]
        
        // 先将视图设为半透明,提供点击反馈
        diceImageView1.alpha = 0.5
        diceImageView2.alpha = 0.5
        sender.alpha = 0.5
        
        // 立即切换骰子图片
        diceImageView1.image = diceArray[Int.random(in: 0...5)]
        diceImageView2.image = diceArray[Int.random(in: 0...5)]
        
        // 动画恢复至默认透明度,实现淡入效果
        UIView.animate(withDuration: 0.2) {
            self.diceImageView1.alpha = 1.0
            self.diceImageView2.alpha = 1.0
            sender.alpha = 1.0
        }
    }
}

代码说明:

  • 点击按钮时先将骰子和按钮设为半透明,给用户即时的交互反馈
  • 切换骰子图片后,通过UIView.animate执行透明度恢复动画,0.2秒的时长可根据需求调整,让淡入效果更自然
  • 动画闭包中修改alpha值,UIKit会自动处理平滑过渡,无需手动管理帧动画

如果需要从完全透明淡入的效果,可将初始alpha设为0,再动画到1.0,代码调整如下:

@IBAction func rollButtonPressed(_ sender: UIButton) {
    let diceArray = [#imageLiteral(resourceName: "DiceOne"), #imageLiteral(resourceName: "DiceTwo"), #imageLiteral(resourceName: "DiceThree"), #imageLiteral(resourceName: "DiceFour"), #imageLiteral(resourceName: "DiceFive"), #imageLiteral(resourceName: "DiceSix")]
    
    // 先隐藏视图
    diceImageView1.alpha = 0
    diceImageView2.alpha = 0
    sender.alpha = 0
    
    // 动画过程中切换图片并淡入显示
    UIView.animate(withDuration: 0.3) {
        self.diceImageView1.image = diceArray[Int.random(in: 0...5)]
        self.diceImageView2.image = diceArray[Int.random(in: 0...5)]
        
        self.diceImageView1.alpha = 1.0
        self.diceImageView2.alpha = 1.0
        sender.alpha = 1.0
    }
}

内容的提问来源于stack exchange,提问作者Alexander Junior Souto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 10:26:03