将动画添加到以编程方式创建的UIview

时间:2019-02-11 14:41:59

标签: ios uilabel swift4

我正在尝试构建UILabel。

但是我想在该标签弹出时进行动画处理

我应该在哪里为标签制作动画?

这是我的代码

static func setupView(view: UIView){
       let networkStatusView = UILabel(frame: CGRect(x: 0, y: 40, width: view.bounds.width, height:50))
        networkStatusView.tag = 20
        networkStatusView.text = "offline"
        networkStatusView.font = UIFont.boldSystemFont(ofSize: 18)
        networkStatusView.translatesAutoresizingMaskIntoConstraints = false
        networkStatusView.textAlignment = .center
        networkStatusView.backgroundColor=UIColor.green
        networkStatusView.layer.borderColor = UIColor.white.cgColor

        UIView.animate(withDuration: 0.5) {
        view.addSubview(networkStatusView)
        }
        view.layoutIfNeeded()    
    }

3 个答案:

答案 0 :(得分:3)

addSubview函数无法设置动画。假设您想要淡入淡出效果,则应使用以下命令更改最后4行:

view.addSubview(networkStatusView)
networkStatusView.alpha = 0.0
UIView.animate(withDuration: 0.5) {
    networkStatusView.alpha = 1.0
    view.layoutIfNeeded()
}

希望这会有所帮助

答案 1 :(得分:1)

就像从顶部掉下来

将View的初始高度设为:0

并对其进行动画处理:

$_GET

答案 2 :(得分:1)

以帮助可视化UIView.animate的工作方式;

在调用UIView.animate方法之前,请考虑一下UILabel所处的状态。例如,基于qtngo's answernetworkStatusView将是当前ViewController视图的子视图,并且由于alpha设置为0,因此将不可见。

现在在动画块中加入-

  

UIView.animate(withDuration: 0.5) { networkStatusView.alpha = 1.0 view.layoutIfNeeded() }

通过将视图的Alpha更改为1.0,开发人员告诉系统在接下来的0.5秒内对networkStatusView进行动画处理。因此,使其可见,但需要0.5秒来完成,从而使视图变为动画!

希望这会有所帮助。