我的笔尖底部有一个UIView。我希望它的高度增长,但让它看起来好像没有移动到位,只是增长。然后将高度缩回到原始高度,除了高度外没有任何移动。不幸的是,它在y定位中反弹。它会正常生长,但会从屏幕底部移动。谁能告诉我为什么?
这是它应该是什么样子,将鼠标悬停在黑匣子上,(UIView应该做什么):
以下是我在目标c中使用的奇怪结果(弹跳)
点击按钮:
[UIView animateWithDuration:0.5 animations: ^{
CGRect blackBackgroundFrame = self.blackBackground.frame;
blackBackgroundFrame.size.height += 50;
self.blackBackground.frame = blackBackgroundFrame;
self.blackBackground.center = CGPointMake(self.blackBackground.center.x, self.blackBackground.center.y - 50);
}];
再次按按钮:
[UIView animateWithDuration:0.5 animations: ^{
CGRect blackBackgroundFrame = self.blackBackground.frame;
blackBackgroundFrame.size.height -= 50;
[self.blackBackground setFrame:blackBackgroundFrame];
self.blackBackground.center = CGPointMake(self.blackBackground.center.x, self.blackBackground.center.y + 50);
}];
为什么它从底部移动?我怎样才能解决这个问题??感谢
答案 0 :(得分:1)
视图可能会弹跳,因为您正在尝试同时为中心和帧设置动画。相反,试试这个:
[UIView animateWithDuration:0.5 animations: ^{
CGRect originalFrame = self.blackBackground.frame;
self.blackBackground.frame = CGRectMake(originalFrame.origin.x,
originalFrame.origin.y-50,
originalFrame.size.width,
originalFrame.size.height+50);
}];
和
[UIView animateWithDuration:0.5 animations: ^{
CGRect originalFrame = self.blackBackground.frame;
self.blackBackground.frame = CGRectMake(originalFrame.origin.x,
originalFrame.origin.y+50,
originalFrame.size.width,
originalFrame.size.height-50);
}];
视图应该正常动画。
编辑:经过仔细检查和一些实验后,看起来问题实际上是你正在将中心改变50像素。你在这里做的事情应该很好,如果你记得中心是中间点,所以高度增加50只会使中心改变25。