2017-08-01 70 views
0

動畫的翻譯和高度有這樣的代碼是Xamarin.iOS。如何在同一時間在iOS中

UIView.Animate(
    1.0, 
    () => View.Frame = new CGRect(0, View.Frame.Y - 30, 100, View.Frame.Height + 40); 
    null 
); 

我是Y動畫翻譯和高度增加。只有翻譯是動畫,但高度增加沒有動畫:(

Xamarin是不相關的事實,我不認爲這是一個Xamarin具體問題,所以答案可能在C#,Objective-C或斯威夫特。

+0

你的意思是不夠的,如果我提供了一個動畫使用純粹的快速? –

+0

@Mohammad Bashir Sidani:是的。迅速將是不夠的,如果作品:) – StackOverflower

+0

請再試thisUIView.animate(withDuration:0.5,延遲:0.3,選擇:[.repeat,.curveEaseOut,.autoreverse],動畫:{ view.frame =的CGRect(X:0, Y:0,寬度:0,高度:0) },完成:無) –

回答

1
UIView.animate(withDuration: 0.5, delay: 0.3, options: [.repeat, .curveEaseOut, .autoreverse], animations: { 
     view.frame = CGRect(x: newX, y:newY, width:newWidth, height:newHeight) 
    }, completion 

: nil) 
+0

有什麼區別用我的代碼?你能解釋爲什麼這會起作用嗎? – StackOverflower

+0

在您的代碼中,將x,y,widt,height全部設置爲0的新寬度和高度是2動畫(高度和原點)動畫? –

+0

如果我將x,y,寬度和高度更改爲0,則只會翻譯動畫。高度和寬度自動轉換爲0,沒有任何動畫 – StackOverflower

0

找到了答案。添加動畫選項UIViewAnimationOptions.LayoutSubviews,讓孩子的意見,以同步動畫與父母的問題有關。

UIView.Animate(
    1.0, 
    0, 
    UIViewAnimationOptions.LayoutSubviews, 
    () => View.Frame = new CGRect(0, View.Frame.Y - 30, 100, View.Frame.Height + 40), 
    null 
);