UIView меняет свое положение в быстрой

Как сделать так, чтобы UIView скользил вверх одним прикосновением к кнопке из ее первоначального положения, а они возвращали его вниз одним нажатием кнопки? Использование Swift и Xcode 6.

Я в настоящее время пробовал это:

@IBOutlet weak var DynView: UIView!

@IBAction func btnUp(sender: AnyObject) {

}

Ответ 1

Вы должны реализовать анимацию, изменяя положение DynView при нажатии. Вот пример:

@IBAction func btnUp(sender: AnyObject) {
    let xPosition = DynView.frame.origin.x
    let yPosition = DynView.frame.origin.y - 20 // Slide Up - 20px

    let width = DynView.frame.size.width
    let height = DynView.frame.size.height

    UIView.animateWithDuration(1.0, animations: {
        dynView.frame = CGRect(x: xPosition, y: yPosition, width: width, height: height)
    })
}

Ответ 2

Привет, создайте это, если хотите. Для Swift

Создать файл Extends.Swift и добавить этот код

/**
    Extension UIView
    by DaRk-_-D0G
*/
extension UIView {
    /**
    Set x Position

    :param: x CGFloat
    by DaRk-_-D0G
    */
    func setX(#x:CGFloat) {
        var frame:CGRect = self.frame
        frame.origin.x = x
        self.frame = frame
    }
    /**
    Set y Position

    :param: y CGFloat
    by DaRk-_-D0G
    */
    func setY(#y:CGFloat) {
        var frame:CGRect = self.frame
        frame.origin.y = y
        self.frame = frame
    }
    /**
    Set Width

    :param: width CGFloat
    by DaRk-_-D0G
    */
    func setWidth(#width:CGFloat) {
        var frame:CGRect = self.frame
        frame.size.width = width
        self.frame = frame
    }
    /**
    Set Height

    :param: height CGFloat
    by DaRk-_-D0G
    */
    func setHeight(#height:CGFloat) {
        var frame:CGRect = self.frame
        frame.size.height = height
        self.frame = frame
    }
}

Для использования (наследует UIView)

inheritsOfUIView.setX(x: 100)
button.setX(x: 100)
view.setY(y: 100)

Ответ 3

Я как бы объединил два наиболее голосованных ответа в один и обновил до Swift 3. Таким образом, в основном создано расширение, которое оживляет представление, перемещающееся в другую позицию:

extension UIView {

    func slideX(x:CGFloat) {

        let yPosition = self.frame.origin.y

        let height = self.frame.height
        let width = self.frame.width

        UIView.animate(withDuration: 1.0, animations: {

            self.frame = CGRect(x: x, y: yPosition, width: width, height: height)

        })
    }
}