2014-09-05 60 views
8

如何使UIView從原始位置輕輕按動一個按鈕,然後只需按一下按鈕就可以使其滑下來?在迅速的Xcode。我到目前爲止只有這個,我不知道有沒有人可以幫忙。在迅速xcode 6.欣賞的答覆。 我目前試過這個。UIView快速更改其位置

@IBOutlet weak 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 2014-09-05 22:21:04

+0

嘗試dynView.frame = CGRectMake(xPosition位置,yPosition ,高度,寬度) – derdida 2014-09-05 22:44:28

+0

// Derdida感謝它取消了錯誤,但是當我運行應用程序,並點擊了我的向上按鈕它崩潰,並在我的appdelegate即時通訊接收「線程1:信號SIGABRT」考慮我有一個並在此視圖中向下按鈕 – Joseandy10 2014-09-05 22:52:21

5

嗨創建此擴展如果你想。 對於斯威夫特

創建文件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) 
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) 

     }) 
    } 
}