我希望在用户在我的iOS应用程序中滚动地图(类型为GMSMapView
)时动画按钮移动:
- (void)setButtonHidden:(bool)hidden
[UIView animateWithDuration:1 animations:^{
[_myButton setAlpha:hidden ? 0 : 1];
// or so:
[_myButtonConstraint setConstant:hidden ? -40 : 92];
[[self view] layoutIfNeeded];
}
}
按钮显示动画效果很好,但隐藏不是动画。
我想是因为我从[self setButtonHidden:YES]
方法调用了mapView:willMove:
,之后地图视图会被动画化。
如何组合不同的动画,在本例中是我的动画和GMSMapView动画?
答案 0 :(得分:2)
我找到了解决方案。原因是GMSMapView
bug
解决方案是:
dispatch_async(dispatch_get_main_queue(), ^{
[UIView animateWithDuration:1 animations:^{
[_myButton setAlpha:hidden ? 0 : 1];
// or so:
[_myButtonConstraint setConstant:hidden ? -40 : 92];
[[self view] layoutIfNeeded];
// or any other animation
}];
});
谢谢大家的帮助!
答案 1 :(得分:0)
您可以组合动画,但hidden
可以打开/关闭。
首先调整alpha(正如您所做,但不是隐藏),并在完成块中设置隐藏。
[UIView animateWithDuration:1
animations:^{
_myButton.alpha = hidden ? 0 : 1;
// or so:
[_myButtonConstraint setConstant:hidden ? -40 : 92];
[[self view] layoutIfNeeded];
} completion:^(BOOL finished) {
_myButton.hidden = hidden ? YES : NO;
}];