• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - UIView 自动布局在屏幕内或屏幕外滑动动画

[复制链接]
菜鸟教程小白 发表于 2022-12-13 08:56:57 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我不知道如何使用自动布局制作滑入/滑出动画。

我添加这样的约束:

NSDictionary *viewsDic = @{@"tmpView" : tmpView};
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat"H:|[tmpView]|" options:0 metrics:nil views:viewsDic]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat"V:|[tmpView]|" options:0 metrics:nil views:viewsDic]];

[UIView animateWithDuration:.4 animations:^{
        [self.view layoutIfNeeded];
    }];

但这动画会从 0,0 位置开始增长。如何实现滑入/滑出动画?



Best Answer-推荐答案


据我了解,您需要获得移位效果。如果我的假设是正确的,您需要在动画期间手动管理水平或垂直填充。你需要得到水平/垂直约束的引用:

@property (nonatomic, strong) NSLayoutConstraint *topPadding;
@property (nonatomic, strong) NSLayoutConstraint *heightConstraint;

添加具有初始值的约束,以便 tmpView 不在其父 View 的可见部分:

self.heightConstraint = [NSLayoutConstraint constraintWithItem:tmpView
                                               attribute:NSLayoutAttributeHeight
                                               relatedBy:NSLayoutRelationEqual
                                                  toItem:nil
                                               attribute:NSLayoutAttributeNotAnAttribute
                                              multiplier:1.0
                                                constant:0.0];

self.topPadding = [NSLayoutConstraint constraintWithItem:tmpView
                                           attribute:NSLayoutAttributeTop
                                           relatedBy:NSLayoutRelationEqual
                                              toItem:self.view
                                           attribute:NSLayoutAttributeTop
                                          multiplier:1.0
                                            constant:self.view.bounds.size.height];

[self.view addConstraint:self.topPadding];
[self.view addConstraint:self.heightConstraint];

那么我们只需要用动画显示 tmpView:

 [self.view layoutIfNeeded];

 [UIView animateWithDuration:.4 animations:^{
    self.topPadding.constant = 0.0;
    self.heightConstraint.constant = self.view.bounds.size.height;

    [self.view layoutIfNeeded];
}];

这个例子 tmpView 从底部出现。 请确保 self.topPadding 不会与您的其他约束冲突

要隐藏 View ,您可以使用以下内容:

 [self.view layoutIfNeeded];

 [UIView animateWithDuration:.4 animations:^{
    self.topPadding.constant = self.superview.bounds.size.height;

    [self.view layoutIfNeeded];
}];

UPD.:有时您还需要添加高度约束。在我的示例中添加了 self.heightConstraint 的使用

UPD.:您仍然需要水平约束。 请留下这些行:

NSDictionary *viewsDic = @{@"tmpView" : tmpView};
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat"H:|[tmpView]|" options:0 metrics:nil views:viewsDic]];

关于ios - UIView 自动布局在屏幕内或屏幕外滑动动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25423278/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap