2015-01-05 43 views
0

當我按下按鈕時,我有一個UITextField動畫到視圖控制器上(從右側移入視圖)。但是,當我按下UITextField或任何其他視圖時,UITextField消失。如何阻止UITextField消失。我使用下面的代碼:UITextField消失

@IBAction func joinCircleButton(sender: AnyObject) { 
    let button = sender as UIButton 
    joinTextField.frame.origin.x=500 
    joinTextField.frame.origin.y=100 
    if (button.frame.origin.x - 75>0){ 
    UIView.animateWithDuration(0.5, animations:{ 
     button.frame = CGRectMake(button.frame.origin.x - 125, button.frame.origin.y,button.frame.size.width, button.frame.size.height) 
     button.transform = CGAffineTransformMakeScale(0.5, 0.5); 
     self.joinTextField.frame=CGRectMake(self.joinTextField.frame.origin.x - 325, self.joinTextField.frame.origin.y,self.joinTextField.frame.size.width, self.joinTextField.frame.size.height) 

    }) 
    } 
} 
override func viewDidLayoutSubviews(){ 
    joinTextField.center = CGPointMake(joinTextField.frame.origin.x-500, joinTextField.frame.origin.y) 


} 
+1

您是否使用自動佈局?如果是這樣,你不應該設置任何框架來移動按鈕。當視圖需要重新繪製時(例如開始編輯文本字段時),按鈕將移回到由其約束定義的位置。 – rdelmar

+0

@rdelmar我刪除了按鈕和文本字段的自動佈局,但我仍然在視圖中使用它來做其他事情?那是問題嗎? – StevenR

+0

如果所有視圖都是在同一個情節提要中製作的,則不能這樣做 - 對於整個情節提要(或整個xib文件),它可以打開或關閉。如果您不自己添加約束,系統會爲您添加它們。 – rdelmar

回答

0

如果您使用的是iPhone模擬器,請嘗試使用50代替500的屏幕寬度小,因此顯示的文本字段裏戲外

joinTextField.frame.origin.x=**50** 
joinTextField.frame.origin.y=100 

override func viewDidLayoutSubviews(){ 
    joinTextField.center = CGPointMake(joinTextField.frame.origin.x-**50**, joinTextField.frame.origin.y) 
} 
+0

我改變了'joinTextField.frame.origin.x - ** 50 **'部分。我應該如何處理它上面的部分? – StevenR

+0

爲什麼textField仍然移動。 – StevenR

+0

如果你想要,我可以通過Skype幫助你。查看我的資料。 –

0

自動佈局不會讓您更改視圖的框架。相反,你想改變約束並致電setNeedsUpdateConstraints()。 如果您需要執行臨時更改視圖位置的動畫,則可以使用CGAffineTransform,特別是CGAffineTransformMakeTranslate(),其中txty表示「您希望移動視圖的點數」。 由於您也可以使用變換在代碼中使用動畫縮放,因此可以使用CGAffineTransformConcat將縮放和變換命令「合併」爲可以設置爲視圖的命令。

你是動畫的方法應該是這個樣子:

UIView.animateWithDuration(0.5) { 
    let trans = CGAffineTransformMakeTranslation(-125, 0) 
    let scale = CGAffineTransformMakeScale(0.5, 0.5) 
    button.transform = CGAffineTransformConcat(trans, scale) 
    self.joinTextField.transform = CGAffineTransformMakeTranslation(-325, 0) 
} 

Learn more about CGAffineTransform in Apple Docs

關於代碼的其餘部分 - 你仍然可以得到幀檢查它在你的if,但你必須將更改框架的部分更改爲使用變換翻譯

+0

那麼,我需要使用哪種方法來防止textField消失。謝謝,我是IOS新手。 – StevenR

+0

這是我有:@IBAction FUNC joinCircleButton(發件人:AnyObject){ 設按鈕=發送者作爲的UIButton UIView.animateWithDuration(0.5){ 讓反式= CGAffineTransformMakeTranslation(-125,0) 令標度= CGAffineTransformMakeScale(0.5 ,0.5) button.transform = CGAffineTransformConcat(trans,scale) self.joinTextField.transform = CGAffineTransformMakeTranslation(-25,-50) }} – StevenR

+0

但是按下時textField仍會移動,但按鈕仍然保持。 – StevenR

相關問題