Xamarin UITableView动画从错误的位置开始

时间:2015-02-02 09:06:21

标签: ios uitableview animation xamarin.ios xamarin

在我的视图中,我有一个UILabel和一个UITableView

我希望它们向下动画40像素。以下是我的代码

        var newFrame = newsStand.Frame;
            newFrame = new CGRect (newsStand.Frame.X, newsStand.Frame.Y+40, newsStand.Frame.Width, newsStand.Frame.Height);
            UIView.BeginAnimations ("slideAnimation");
            UIView.SetAnimationDuration (2);
            UIView.SetAnimationCurve (UIViewAnimationCurve.EaseInOut);
            UIView.SetAnimationDelegate (this);
            UIView.SetAnimationDidStopSelector (new Selector ("slideAnimationFinished"));
            nfloat newY=searchLabel.Center.Y+40;
            searchLabel.Center = new  CGPoint (searchLabel.Center.X, newY);
            newsStand.Frame =  newFrame;
            UIView.CommitAnimations ();

newsStand是我的UITableView实例和searchLabelUILabel实例。执行此代码时,searchLabel通过向下移动40个像素按预期动画。但newsStand最初向上跳跃40像素并动画到其原始位置。我尝试过设置searchLabel的中心(就像我为newsStand所做的那样)而不是Frame。但结果是一样的。是什么导致了这种行为?

1 个答案:

答案 0 :(得分:2)

你的方法非常复杂。您可以使用UIView.Animate()来大大简化动画:

var myLabel = new UILabel (new CGRect (100, 100, 100, 40))
{ 
    Text = "Animate me!",
    TextColor = UIColor.Yellow
};
window.Add (myLabel);

UIView.Animate (
    duration: 0.5,
    animation: () => myLabel.Center = new CGPoint (myLabel.Center.X, myLabel.Center.Y + 40),
    completion: () => {}
);