iOS的滑入式菜单

iOS的滑入式菜单,ios,swift,cocoa-touch,uiview,Ios,Swift,Cocoa Touch,Uiview,我正在尝试创建一个从左侧进入的滑入菜单,但我做了一些事情,它进入了右侧。我已经通过编程实现了这一点,而不是使用故事板,因为大多数时候约束都会弄糟 例如,这里有一个截图,可能是我做的: 始终记住,x和y的0、0始终是屏幕的左上角,如果宽度和高度为20、20,则它将从左上角、右上角20px穿过并向下移动20px。在viewDidLoad中,您必须做的第一件事是设置collectionViews初始帧,它在屏幕外是这样的。不要忘记负宽度: 从左侧设置动画,如下所示: UIView.a

我正在尝试创建一个从左侧进入的滑入菜单,但我做了一些事情,它进入了右侧。我已经通过编程实现了这一点,而不是使用故事板,因为大多数时候约束都会弄糟

例如,这里有一个截图,可能是我做的:


始终记住,x和y的0、0始终是屏幕的左上角,如果宽度和高度为20、20,则它将从左上角、右上角20px穿过并向下移动20px。在viewDidLoad中,您必须做的第一件事是设置collectionViews初始帧,它在屏幕外是这样的。不要忘记负宽度:

从左侧设置动画,如下所示:

        UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping:
            1, initialSpringVelocity: 1, options: .curveEaseOut,
            animations: {
            self.blackView.alpha = 1

            self.collectionView.frame = self.CGRectMake(0, 0, self.collectionView.frame.width, self.collectionView.frame.height)

        }, completion: nil)
解雇:

        UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping:
            1, initialSpringVelocity: 1, options: .curveEaseOut,
            animations: {
            self.blackView.alpha = 1

            self.collectionView.frame = self.CGRectMake(-width, 0, self.collectionView.frame.width, self.collectionView.frame.height)

        }, completion: nil)

您确实应该使用约束,而不是显式定义框架。如果这就是您选择不在此处使用约束更改的原因,您可以设置约束更改的动画。设置约束动画是否比按我的方式更好?我在实现-width-one时出错,并且在ViewDidLoad时出错part@RyanCouch真棒。很乐意帮忙。如果你把它作为答案,如果它能帮你解决问题,我将不胜感激。如果您还有任何问题,请告诉我
        UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping:
            1, initialSpringVelocity: 1, options: .curveEaseOut,
            animations: {
            self.blackView.alpha = 1

            self.collectionView.frame = self.CGRectMake(0, 0, self.collectionView.frame.width, self.collectionView.frame.height)

        }, completion: nil)
        UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping:
            1, initialSpringVelocity: 1, options: .curveEaseOut,
            animations: {
            self.blackView.alpha = 1

            self.collectionView.frame = self.CGRectMake(-width, 0, self.collectionView.frame.width, self.collectionView.frame.height)

        }, completion: nil)