Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何通过动画使UIView从另一个UIView的一侧显示出来?_Ios_Swift - Fatal编程技术网

Ios 如何通过动画使UIView从另一个UIView的一侧显示出来?

Ios 如何通过动画使UIView从另一个UIView的一侧显示出来?,ios,swift,Ios,Swift,我正在我的项目中使用swift。在这个项目中,我在UIViewController中有一个UIView(称为mySubView1),在mySubView1(mySubView2包含一些要显示的数据)中有另一个UIView(称为mySubView2)。 像这样: +++++++++++++++++++++++++++++++++++++++++++ | | |

我正在我的项目中使用swift。在这个项目中,我在UIViewController中有一个UIView(称为mySubView1),在mySubView1(mySubView2包含一些要显示的数据)中有另一个UIView(称为mySubView2)。 像这样:

+++++++++++++++++++++++++++++++++++++++++++
|                                         |
|                                         |
|             myViewController            |
|                                         |
|        ++++++++++++++++++++++++         | 
|        |      mySubView1      |         |
|        |                      |         |                                               
|        |  ++++++++++++++++++  |         |
|        |  |   mySubView2   |  |         |
|        |  ++++++++++++++++++  |         |
|        ++++++++++++++++++++++++         |
|                                         |
|                                         |
|                                         |
|                                         |
+++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++
|                                         |
|                                         |
|             myViewController            |
|                                         |
|        ++++++++++++++++++++++++         | 
|        |      mySubView1      |         |
|        |                      |         |                                               
|        |  ++++++++++++++++++  |         |
|        |  |   mySubView2   |  |         |
|        |  |                |  |         |
|        +++|                |++|         |
|           |    someData    |            |
|           |                |            |
|           ++++++++++++++++++            |
|                                         |
+++++++++++++++++++++++++++++++++++++++++++
然后mySubView2从mySubView1中出来,并通过如下动画传递mySubView1的底部:

+++++++++++++++++++++++++++++++++++++++++++
|                                         |
|                                         |
|             myViewController            |
|                                         |
|        ++++++++++++++++++++++++         | 
|        |      mySubView1      |         |
|        |                      |         |                                               
|        |  ++++++++++++++++++  |         |
|        |  |   mySubView2   |  |         |
|        |  ++++++++++++++++++  |         |
|        ++++++++++++++++++++++++         |
|                                         |
|                                         |
|                                         |
|                                         |
+++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++
|                                         |
|                                         |
|             myViewController            |
|                                         |
|        ++++++++++++++++++++++++         | 
|        |      mySubView1      |         |
|        |                      |         |                                               
|        |  ++++++++++++++++++  |         |
|        |  |   mySubView2   |  |         |
|        |  |                |  |         |
|        +++|                |++|         |
|           |    someData    |            |
|           |                |            |
|           ++++++++++++++++++            |
|                                         |
+++++++++++++++++++++++++++++++++++++++++++
设想一台打印机在纸上打印一些数据(myViewController作为打印机,mySubView1作为打印机输出,mySubView2作为纸张)

更新:
我正在我的项目中使用NSLAYOUTACHOR:

override func viewDidLoad() {
    super.viewDidLoad()

    let heightAnchor: NSLayoutConstraint
    let mySubView1 = UIView()
    mySubView1.translatesAutoresizingMaskIntoConstraints = false
    mySubView1.backgroundColor = .blue
    view.addSubview(mySubView1)

    mySubView1.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    mySubView1.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
    mySubView1.widthAnchor.constraint(equalTo: view.widthAnchor, constant: -40).isActive = true
    mySubView1.heightAnchor.constraint(equalToConstant: 100).isActive = true

    let mySubView2 = UIView()
    mySubView2.clipsToBounds = true
    mySubView2.translatesAutoresizingMaskIntoConstraints = false
    mySubView2.backgroundColor = .yellow
    view.addSubview(mySubView2)

    mySubView2.topAnchor.constraint(equalTo: mySubView1.topAnchor, constant: 40).isActive = true
    mySubView2.centerXAnchor.constraint(equalTo: mySubView1.centerXAnchor).isActive = true
    mySubView2.widthAnchor.constraint(equalTo: mySubView1.widthAnchor, constant: -40).isActive = true
    heightAnchor = mySubView2.heightAnchor.constraint(equalToConstant: 100)
    heightAnchor.isActive = true
    heightAnchor.constant = 500
    UIView.animate(withDuration: 3) {

        mySubView2.layoutIfNeeded()
    }
}
方法是:

  • mySubView1
    mySubView2
    添加为视图控制器的子视图

  • mySubView1
    发送到低于
    mySubView2

  • 使用这两个调用实现上一步:

    self.view.sendSubview(toBack:mySubView1)

    self.view.bringSubview(toFront:mysubview 2)

  • 设置
    mySubView2
    边界的动画,使其沿
    Y
    方向增长


您只需遵循以下简单步骤:

  • 首先,确保将
    subView1
    subView2
    添加为
    ViewController
    视图的子视图
  • 确保两个视图都受到适当的约束。您已经为
    子视图2
    提供了
    高度锚定
    约束
  • 现在增加
    subView2
    heightAnchor
    约束的常量值,并在
    UIView.animate
    的完成块内调用
    view.layoutSubViews()

  • 有几件事可以做。如果您可以显示您添加的约束或任何您更新了我的问题的内容,这将非常有用。我正在项目中使用NSLAYOUTACHOR。