使用约束对 UIView 框架进行动画处理

2024-04-16

我在 UIView 中有一个元素,它有一个约束,规定它应该始终距离视图底部 10 像素。然后,我尝试为该视图的高度设置动画,使其看起来从屏幕上滑下。根据约束,元素应始终距视图底部 10 像素。当我像这样添加视图时,这是正确的......

printView *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"printView"];
    [self addChildViewController:vc];
    vc.view.frame = CGRectMake(0, 60, vc.view.frame.size.width, HEIGHT);
    vc.view.layer.masksToBounds = FALSE;
    [vc.view.layer setShadowOffset:CGSizeMake(0.0, 5.0)];
    [vc.view.layer setShadowOpacity:0.8];
    vc.view.layer.shadowColor = [[UIColor blackColor] CGColor];
    vc.view.layer.shadowRadius = 8;
    vc.view.clipsToBounds = TRUE;
    [self.view insertSubview:vc.view aboveSubview:docWebView];

我可以将 HEIGHT 更改为我想要的任何值,并且元素始终距视图底部 10 像素。当我尝试设置高度动画时,问题就出现了

printView *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"printView"];
    [self addChildViewController:vc];
    vc.view.frame = CGRectMake(0, 60, vc.view.frame.size.width, 0);
    vc.view.layer.masksToBounds = FALSE;
    [vc.view.layer setShadowOffset:CGSizeMake(0.0, 5.0)];
    [vc.view.layer setShadowOpacity:0.8];
    vc.view.layer.shadowColor = [[UIColor blackColor] CGColor];
    vc.view.layer.shadowRadius = 8;
    vc.view.clipsToBounds = TRUE;
    [self.view insertSubview:vc.view aboveSubview:docWebView];
    [UIView animateWithDuration:5.0 animations:^{
        vc.view.frame = CGRectMake(0, 60, vc.view.frame.size.width, 200);
        [self.view setNeedsDisplay];
    }];

该约束不再受约束,并且视图不再与元素始终距离底部 10 像素的位置滑入,而是看起来元素未被覆盖,因为元素不随视图移动。我希望我能很好地解释这一点。换句话说,我想要地图被拉下来的效果,但相反,它看起来像是地图已经在那里,并且覆盖它的一张纸被拉走了。感谢您的帮助。


使用约束时,您不应该设置框架,而应该调整约束。当您最初设置约束时,您应该为高度约束创建一个 IBOutlet,然后在动画块中为其常量参数设置动画。如果你有一个名为 heightCon 的高度约束,你可以这样做:

[UIView animateWithDuration:5.0 animations:^{
        self.heightCon.constant = 200
        [self.view layoutIfNeeded];
    }];

我不确定你的结构, self.view 可能必须是 vc.view 。

编辑后:

这是对高度限制进行动画处理的方法,但我不确定这是否是您想要实现的外观。我不太确定你最后一段的意思。如果您想要实现地图被下拉的效果,那么底部约束似乎需要设置动画或消除。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用约束对 UIView 框架进行动画处理 的相关文章

  • 如果加载 dylib,垃圾收集工作队列会崩溃

    我们正在将应用程序从 10 6 移植到 10 8 我正在查看我们在应用程序中加载的 dylib 我面临着非常不寻常的崩溃垃圾收集工作队列并附有以下消息 malloc Thread suspend unable to suspend a th
  • 如何在应用程序项目中使用 Cocoa Touch 框架

    我熟悉构建单个 iOS 应用程序 但我坚持使用 Cocoa Touch 框架向多个应用程序共享通用代码 问题 框架的头文件不可见 无法链接到消费应用程序项目 我做了什么 1 我创建了一个名为 libTestFramework 的项目 Coc
  • 在 UITextView 中获取 HTML

    我在中显示htmlUITextView by self textView setValue b Content b forKey contentToHTMLString 编辑内容后UITextView 我想获取包含 html 的内容 所以我
  • 如何解决 iOS 6 SDK 中的 hidesBottomBarWhenPushed 行为异常的问题?

    我遇到了中描述的相同问题这个 OpenRadar 问题 http www openradar me 14670329 正如那里所说 摘要 UIViewController的hidesBottomBarWhenPushed属性 对于使用 iO
  • iOS Swift 在后台下载大量小文件

    在我的应用程序中 我需要下载具有以下要求的文件 下载大量 例如 3000 个 小 PNG 文件 例如 5KB 逐个 如果应用程序在后台继续下载 如果图像下载失败 通常是因为互联网连接丢失 请等待 X 秒然后重试 如果失败Y次 则认为下载失败
  • 是否可以使用UIPageControl来控制UITableView的移动?

    从Apple示例 PageControl 中我们可以知道UIPageControl可以用来控制scrollview中页面的移动 由于 UITableView 是 UIScrollView 的子类 我想使用 UIPageControl 来控制
  • 将 Armadillo C++ 库导入 Xcode

    我是 Mac 用户 正在尝试安装和导入 C Armadillo 库 以下是我到目前为止所采取的步骤 1 我从其网站下载了犰狳库 2 我仔细阅读了下载文件中的 Readme txt 文件 解释了如何安装它 3 我使用CMake将犰狳下载文件制
  • 访问 google reader 的 Endpoints API 时出错

    我正在尝试在iPhone APP中实现google reader 到目前为止我已经成功收到了sid and auth 当我尝试使用以下命令调用 Endpoints API 时 问题就出现了GET 这是代码 ASIHTTPRequest re
  • 如何将CIFilter应用到UIView上?

    根据Apple docs 过滤属性CALayer不支持iOS 当我使用正在申请的应用程序之一时CIFilter to UIView即 Splice Funimate 和 Artisto 的视频编辑器 Videoshow FX 这意味着我们可
  • 如何检索 iPhone 的区域设置

    我用谷歌搜索过它 但令我有点惊讶的是我找不到它 我只想访问设备配置的区域设置 我试图找到如何列出所有系统属性 以防我能在那里找到区域设置 但甚至找不到如何做到这一点 我知道 认为 我之前检索过系统属性 但我也记得在谷歌搜索时找到该信息并不容
  • 使用 BGTaskScheduler 进行后台获取与调试模拟完美配合,但在实践中却不起作用

    我在 appDelegate 的 didFinishLaunchingWithOptions 中注册后台获取任务 BGTaskScheduler shared register forTaskWithIdentifier Backgroun
  • Swift:协议、结构、类

    我开始学习 Swift 语言 但在理解协议 结构和类方面遇到了困难 我来自 Android 方面的编程 所以我相信 Swift 协议基本上是 Java 接口 其中每一个的正确用例是什么 这些类比并不 完全 正确 但这就是我所理解的要点 是的
  • 如何在Sprite Kit中实现鼠标关节?

    我已经在 iOS 上用 Cocos2d Box2d 编写了拖放功能的工作实现 我需要将它移植到 Sprite Kit 逻辑非常基本 当用户触摸屏幕时 找到手指下的精灵 在找到的精灵和场景的物理体之间创建鼠标关节 将关节的目标设置为触摸位置
  • 检查 Objective-C 块类型?

    这主要是出于好奇 我不太确定它的实际用途是什么 但就这样吧 由于块也是 Objective C 对象 是否可以检查它们的类型 也就是说 它是否响应isKindOfClass 消息以及如何使用该消息来处理块 我天真的以为事情大概是这样的 vo
  • 如何在 iOS 上固定证书的公钥

    在提高我们正在开发的 iOS 应用程序的安全性时 我们发现需要对服务器的 SSL 证书 全部或部分 进行 PIN 操作以防止中间人攻击 尽管有多种方法可以做到这一点 但当您搜索此内容时 我只找到了固定整个证书的示例 这种做法会带来一个问题
  • 当 ViewController 从 UIStoryboard 实例化时,isMemberOfClass 返回 no

    我有一个 OCUnit 测试类 PatientTestViewControllerTests 下面是界面 interface PatientTestViewControllerTests SenTestCase property nonat
  • 子类 PFObject 上的 PFUser 属性

    我使用以下类 动态属性以及 m 文件中的 load 和 parseClassName 方法 对 PFObject 进行了子类化 interface DAOpponents PFObject
  • 领域:结果 和列表

    是否可以转换Results
  • 如何将自定义 C 代码放入 SwiftPM 包中?

    我正在尝试将 C 代码打包到 Swift 模块中 我们称之为CModule 一旦我将其放入项目的基本文件夹中 Swift模块 并配置了搜索路径 我可以在 Swift 文件中自动完成工作 并检测错误 警告 问题是 导入时它无法识别该模块 并且
  • 如何观察UserDefaults的变化?

    我有一个 ObservedObject在我看来 struct HomeView View ObservedObject var station Station var body some View Text self station sta

随机推荐