首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当GMSMapView将移动时,如何为NSLayoutConstraint设置动画?

当GMSMapView将移动时,如何为NSLayoutConstraint设置动画?
EN

Stack Overflow用户
提问于 2017-03-10 14:39:04
回答 2查看 186关注 0票数 0

当用户在我的iOS应用程序中滚动地图(其类型为GMSMapView)时,我想为按钮的移动添加动画效果:

代码语言:javascript
运行
复制
- (void)setButtonHidden:(bool)hidden
    [UIView animateWithDuration:1 animations:^{
        [_myButton setAlpha:hidden ? 0 : 1];
        // or so:
        [_myButtonConstraint setConstant:hidden ? -40 : 92];
        [[self view] layoutIfNeeded];
    }
}

按钮显示动画效果很好,但隐藏不是动画效果。

我想这是因为我从mapView:willMove:方法调用了[self setButtonHidden:YES],之后地图视图将被动画。

如何组合不同的动画,在本例中是我的动画和GMSMapView动画?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-10 15:55:02

我找到了解决方案。原因是GMSMapView bug

解决方案是:

代码语言:javascript
运行
复制
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
    }];
});

感谢大家的帮助!

票数 3
EN

Stack Overflow用户

发布于 2017-03-10 14:51:07

您可以组合动画,但hidden只能打开/关闭。首先调整alpha (就像你做的那样,但不是隐藏的),然后在完成块中设置为隐藏。

代码语言:javascript
运行
复制
[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;
                     }];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42711896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档