2014-09-05 19 views
8

Jak zrobić UIView przesuwać się jednym naciśnięciem przycisku z jego pierwotnego położenia, a następnie przywrócić go jednym naciśnięciem przycisku? W szybkim Xcode. Mam to tylko do tej pory, nie wiem, czy ktokolwiek może pomóc. W szybkim kodzie Xcode 6. Doceń odpowiedzi. Obecnie próbowałem tego.UIView zmienia swoją pozycję w szybkim tempie.

@IBOutlet słabe var DynView: UIView!

@IBAction func btnUp(sender: AnyObject) { 

} 

Odpowiedz

26

Musisz zaimplementować animację zmieniającą pozycję DynView po kliknięciu. Oto przykład:

@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 .. Widzę teraz Thiago .. Jeszcze jedno jej daje mi błąd: CGRect nie jest converitble do UIView – Joseandy10

+0

Spróbuj dynView.frame = CGRectMake (xPosition, yPosition , wysokość, szerokość) – derdida

+0

// Derdida dziękuje za błąd, ale gdy uruchomiłem aplikację i kliknąłem na mój przycisk, to się zawiesza iw moim appdelegate im recieving "Thread 1: signal SIGABRT" do rozważenia mam up i przycisk w dół w tym widoku – Joseandy10

5

Cześć, utwórz to, jeśli chcesz. Dla Swift

Utwórz plik Extends.Swift i dodać ten kod

/** 
    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 
    } 
} 

zastosowania (inherits Of UIView)

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

Jakbym połączeniu dwóch najbardziej głosował w odpowiedzi na jeden i zaktualizowany do Swift 3. Zasadniczo utworzono rozszerzenie, które ożywia widok przeniesienie do innej pozycji:

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) 

     }) 
    } 
} 
Powiązane problemy