2014-09-05 4 views
8

Как сделать слайд UIView одним нажатием кнопки в исходном положении, и они возвращают его одним нажатием кнопки? В быстром Xcode. У меня есть это до сих пор, я не знаю, может ли кто-нибудь помочь. В быстром xcode 6. Оцените ответы. Я в настоящее время пробовал это.UIView меняет свое положение в swift

@IBOutlet слабый var DynView: UIView!

@IBAction func btnUp(sender: AnyObject) { 

} 

ответ

26

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

@IBAction func btnUp(sender: AnyObject) { 

let xPosition = DynView.frame.origin.x 

//View will slide 20px up 
let yPosition = DynView.frame.origin.y - 20 

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

UIView.animateWithDuration(1.0, animations: { 

    dynView.frame = CGRectMake(xPosition, yPosition, height, width) 

}) 
} 
+0

OK OK .. Я вижу теперь Тиаго .. просто еще одна вещь его дает мне ошибку: CGRect не converitble к UIView – Joseandy10

+0

Попробуйте dynView.frame = CGRectMake (xPosition, yPosition , высота, ширина) – derdida

+0

// Derdida благодарит, что снял эту ошибку, но когда я запустил приложение и нажал на мою кнопку вверх, он сработает, и в моем приложении appdelegate я получаю сообщение «Thread 1: signal SIGABRT» для рассмотрения. У меня есть и вниз кнопка в этом представлении – Joseandy10

5

Привет, создайте это, если хотите. Для 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 
    } 
} 

для использования (наследуемый Of UIView)

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

Я вроде объединил два самых проголосовали ответы в одном и обновлены до 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) 

     }) 
    } 
} 
Смежные вопросы