CoreAnimation,在 iOS 5 Xcode 4 中使用动画阴影移动 UIImageView

2024-04-05

我正在尝试为图像添加类似(假)3d 的效果(UIImageView 从 A 点移动到 B 点,在此移动过程中我希望在 C=(A+B)/2 点处使其具有最大的阴影尺寸(或较大的阴影偏移),所以看起来又在上下移动。 当我尝试改变阴影大小时,它没有动画。你能帮我如何编辑这段代码吗:

NSValue *pointB = [NSValue valueWithCGPoint:CGPointMake(CGRectGetMinX(imageView.frame)+50, CGRectGetMinY(imageView.frame)+50)];
[self.view bringSubviewToFront:ImageView];    
[UIView beginAnimations:@"UIImage Move" context:NULL];
CGPoint point = [pointB CGPointValue];
CGSize size =imageView.frame.size;
[UIView setAnimationDuration:1.0];
imageView.frame = CGRectMake(point.x, point.y, size.width, size.height);
imageView.layer.shadowOffset = CGSizeMake(0, 4); //actually I want this to happen in mid point and revert to offset 1
[UIView commitAnimations];


//sorry for possible problems with syntax, the code works fine, I had to rewrite and simplify it for understanding

您需要使用 CAAnimation 对图层的 ShadowOffset 进行动画处理。以下是如何在移动对象时放大shadowOffset 的示例。此示例使用 UIButton。

#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>
@interface ViewController : UIViewController 
@property (nonatomic, retain) IBOutlet UIButton *button;
@end

在 M 文件中,我从按钮 IBAction 调用按钮上的动画。

-(IBAction)shadowGrow:(id)sender {
    CABasicAnimation *shadowGrow = [CABasicAnimation animationWithKeyPath:@"shadowRadius" ];
    shadowGrow.delegate = self;
    [shadowGrow setFromValue:[NSNumber numberWithFloat:3.0]];
    [shadowGrow setToValue:[NSNumber numberWithFloat:20.0]];
    [shadowGrow setDuration:1.0f];
    shadowGrow.autoreverses = YES;

    CABasicAnimation *move = [CABasicAnimation animationWithKeyPath:@"transform.translation.x" ];
    move.delegate = self;
    [move setFromValue:[NSNumber numberWithFloat:0]];
    [move setToValue:[NSNumber numberWithFloat:50]];
    [move setDuration:1.0f];
    move.autoreverses = YES;

    //Add animation to a specific element's layer. Must be called after the element is displayed.
    [[button layer] addAnimation:shadowGrow forKey:@"shadowRadius"];
    [[button layer] addAnimation:move forKey:@"transform.translation.x"];
}

使用 CoreAnimation 需要记住的一件事是,当像这样对属性进行动画处理时,它们将从一开始就恢复到它们的值,除非您在动画结束后在 CAAnimation 的委托方法中设置这些值。

- (void) animationDidStop:(NSString *)theAnimation finished:(NSNumber *)finished context:(void *)context

以下是有关 CALayer 可动画属性的一些附加信息。

CALayer 和 CIFilter 可动画属性 https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreAnimation_guide/Articles/AnimProps.html#//apple_ref/doc/uid/TP40005942-SW1

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

CoreAnimation,在 iOS 5 Xcode 4 中使用动画阴影移动 UIImageView 的相关文章

  • 应用程序未通过协同设计验证?

    我在提交 iPhone 申请时遇到问题 我看到了一些类似的问题 但没有找到答案 当我存档项目并单击 验证 时 收到错误消息 应用程序未通过协同设计验证 签名无效 或者未使用 Apple 提交证书进行签名 我假设我在协同设计部分做错了什么 我
  • Swift 中通过不同类调用委托方法

    我正在获取 JSON 菜单 一旦 JSON 返回 我想运行 menuReady 来更新表的内容在 SomeTableViewController 类中 但下面的代码似乎不起作用 AIM Run 菜单就绪 JSON 返回后更新内容 PROBL
  • 将 iPhone 上的 stderr 写入文件和控制台

    我正在遵循答案中的建议here https stackoverflow com questions 5179108 iphone how to read application logs from device用于将 iOS 设备上的 NS
  • 如何通过辅助功能 API 获取当前所选文本的全局屏幕坐标。

    我需要帮助来了解字典应用程序如何在任何应用程序上按 CMD CTRL D 时显示所选文本的以下弹出对话框 我想实施 我的可可应用程序具有相同的功能 我的应用程序将在后台运行 并显示有关所选文本的一些热键的建议 我已经实现了热键捕获 我只需要
  • 显示键盘时如何在 TextView 下方添加更多填充

    当我在 ScrollView 中有 TextField 并点击它时 键盘会按预期显示 但似乎 TextField 已向上移动到足以显示输入区域 但我希望移动到足够的位置 以便整体可见 否则它看起来像是被剪裁了的 我找不到改变这种行为的方法
  • 在 UIMenuItem 上设置accessibilityLabel

    我正在尝试设置accessibilityLabel of a UIMenuItem而且似乎没有效果 无论如何 VoiceOver 只是读取项目的标题 let foo UIMenuItem title foo action selector
  • ActionScript、NetStream.Play.Failed iOS AIR 移动设备

    我正在尝试以类似于 Tiberiu Ionu Stan http stackoverflow com questions 2036107 aac mp4 not working in actionscript 3s netstream 的方
  • UITabBarController 未选择的图标图像色调

    我有一个 UITabBarController 我正在尝试修改 现在 未选择的选项卡图标图像默认为灰色 我知道您无法以编程方式更改这些未选择的图标图像的色调 苹果表示 色调是由 png 文件本身的实际色调控制的 因此 如果您想要白色或绿色图
  • 设置 TableView setEditing 时无法选择 UITableViewCell

    我希望能够选择多行 如下所示的默认邮件应用程序 我有一个名为编辑的按钮 可以调用 self myTableView setEditing YES animated YES 编辑按钮成功显示单元格左侧的圆圈 如上所示的邮件应用程序 但是 当我
  • CALayer 抗锯齿不如 UIView 抗锯齿

    我一直在尝试使用 CALayer 制作圆形绘图的动画 一切都运行良好 但问题是 绘制的圆不够抗锯齿 它的边界有点太粗糙 或者如果使用光栅化则模糊 抗锯齿已启用 还尝试过 边缘抗锯齿遮罩 kCALayerLeftEdge kCALayerRi
  • 使用GCD实现并发读独占写模型

    我试图了解使用 Grand Central Dispatch GCD 实现控制资源访问的并发读独占写模型的正确方法 假设有一个 NSMutableDictionary 被大量读取并且偶尔更新 确保读取始终与字典状态一致的正确方法是什么 当然
  • iOS崩溃核心位置CFBasicHashCreateCopy?

    我已经通过 Crashlytics 报告了这个问题 尽管我无法在本地复制它 所以除了下面的堆栈跟踪之外我没有什么可做的 不确定堆栈跟踪中是否引用了 CoreLocation与它有任何关系 但我不确定可能是什么原因 我的项目使用的是ARC 有
  • Firestore 读取包含子集合的文档的计费

    我正在制作一个应用程序 它存储用户使用我的应用程序学习了多少分钟 我的 Firestore 数据库以 用户 集合开始 每个用户都有自己的文档 该文档由其在 Auth 中生成的 userID 命名 我的问题是 如果我读取了他们的 userID
  • 观察 UIDatePicker 的变化

    我注意到没有委托来观察 UIDatePicker 中的变化 有没有一种方法可以在不确认任何内容的情况下检测选择器中何时进行更改 例如它旋转并落在新数字上的那一刻 我希望能够检测到这一点 我考虑过关键值观察 但我不认为有一个属性会立即改变 您
  • 将 OpenCV Mat 转换为数组(可能是 NSArray)

    我的 C C 技能很生疏 OpenCV 的文档也相当晦涩难懂 有没有办法获得cv Mat data属性转换为数组 NSArray 我想将其序列化为 JSON 我知道我可以使用 FileStorage 实用程序转换为 YAML XML 但这不
  • WKWebView:无需 Javascript 即可缩放PageToFit 行为

    如何获得scalesPageToFit显示在 HTML 内容中的行为WKWebView 不使用 JavaScript 在我们的例子中需要禁用 JS 抱歉没有发布任何代码 但我不知道如何实现这一目标 我所知道的和我找到的所有解决方案都是基于J
  • 将文本拆分为数组,同时保留 Swift 中的标点符号

    我想将文本拆分为一个数组 保持标点符号与其余单词分隔开 因此字符串如下 Hello I am Albert Einstein 应该变成这样的数组 Hello I am Albert Einstein 我尝试过sting components
  • 如何判断handleOpenURL是在应用程序启动时调用还是在应用程序运行时调用?

    由于事件的顺序略有不同 具体取决于这两个场景中的哪一个正在进行 我希望能够区分出区别 有什么建议么 你不应该使用handleOpenURL因为它已被弃用 相反 使用application openURL sourceApplication
  • 应用程序被终止时是否会收到 iOS 静默通知

    当发送后台推送时 content available 1 对于被用户杀死的应用程序 该应用程序不会启动到后台模式 并且application didReceiveRemoteNotification fetchCompletionHandl
  • 通过 Apple 批量购买计划分发自定义 B2B iOS 应用程序?

    我们的要求是为组织内超过 1000 名用户分发 iOS 应用程序 我的问题 我们可以做吗使用 iOS Developer Provisioning Profile 分发 iPA 因为我们有 99 美元的 Apple 帐户 而不是企业帐户 并

随机推荐

  • 网页查看历史记录

    WebView中什么时候将页面添加到前进后退列表中 我有 webview setMaintainsBackForwardList YES 但是 webview canGoBack 在我执行了几个 webview mainFrame load
  • Gtk Widget 到 Winform

    是否可以使用 System Windows Forms 将 Gtk 小部件嵌入到应用程序中 谢谢 两个工具包都使用自己单独的 UI Mainloop 来处理事件 例如鼠标移动 按钮按下等 因此 将两者混合实际上是不可能的 尽管几年前 Gtk
  • 使用多个参数记录

    我目前正在开发一个程序 其中我必须将所有输出写入日志文件 我需要编写一个日志方法 它应该按照我指定的顺序给出一个输出 其中包含级别 消息 对象值 另一条消息 一个整数值 另一条消息和另一个整数值 我似乎找不到执行此操作的日志方法 我在用Ja
  • 如何升级SQLite版本?

    我正在开发我的第一个应用程序 并使用以下代码查看我的 SQLite 版本 Cursor cursor SQLiteDatabase openOrCreateDatabase memory null rawQuery select sqlit
  • 如何设置 Eclipse 项目引用

    我的工作区中有一个 Web 项目 它依赖于工作区中的 java 项目 在项目引用中 我使我的 Web 项目引用了 java 项目 但仍然存在构建错误 表明我的 java 项目中的类未被我的 Web 项目引用 一个答案 这不是对您的问题的直接
  • Eclipse 找不到 MinGW。为什么?

    我都正确安装了 但是无论我是否正确设置编译器路径都没关系 因为它找不到 gcc 和 g 我用资源管理器检查过 它们位于正确的位置 我尽了一切努力 甚至以向后兼容模式并以管理员身份运行 Eclipse 编辑 如果 Eclipse 不能至少像用
  • 如何从 Javascript 或 Jquery 数组中选择随机值? [复制]

    这个问题在这里已经有答案了 我试图显示数组中的 3 个随机值 以下脚本仅从 javaScript 数组返回单个项目 var arrayNum One two three four five six seven eight nine var
  • 如何使用SessionState获取剩余会话超时时间?

    是否可以使用 ASP net 中的 sessionState 获取剩余会话超时 这是我的 webconfig 文件中的 sessionState 代码
  • 如何输出未包含在分组依据中的属性及其计数

    我在这里想要实现的是 我希望从该 LINQ 查询返回具有两个属性的列表 billNo 和同一 fromDate 上导入代码出现的次数 因此 这里我们的 billNo 1 和 2 都具有相同的导入代码 该导入代码在同一日期 01 01 202
  • 如何在 macOS 上将 libxml2 与 python 一起使用?

    我在 OSX Lion 上 安装了 libxml2 默认情况下 并且安装了 python 默认情况下 但它们不互相通信 在 Lion 上实现此功能的最简单方法是什么 python c import libxml2 Traceback mos
  • 在Ubuntu 18.04、Python 3.6.7 64位、Mono 5.16上安装pythonnet失败

    我想在 Ubuntu 上安装 pythonnet 但失败了 这就是我到目前为止所尝试的 usr bin python3 m pip install U pythonnet user Error Collection pythonnet Us
  • DOM 中两个元素之间的距离(以 px 为单位)

    如何获取 DOM 中两个元素之间的距离 我正在考虑使用获取边界客户端矩形 https developer mozilla org en US docs Web API Element getBoundingClientRect 但我不知道如
  • C# POCO 的 DbGeography 替代方案

    我正在编写一个应用程序 我需要查询某个位置半径内的记录 我一开始在 PCO 上只使用了一对经纬度属性 但意识到 SQL 中的空间搜索是针对地理列类型完成的 该地理列类型可转换为 POCO 中的 DbGeography 在另一篇 SO 帖子中
  • SharePoint 中的跨方法处置模式

    我编写了一个类 可以对 SharePoint 网站的内容进行各种修改 在该类中 我实现了一个惰性解析属性 private SPWeb rootSite get if site null SPSite site new SPSite url
  • 订阅 RSS 源

    我正在编写一个非常简单的 RSS 阅读器 它所需要做的就是获取 xml 文档 并将每个项目的标题和发布日期打印到控制台 我开始使用这两个问题 如何开始制作 C RSS 阅读器 https stackoverflow com question
  • Hbase连接zookeeper错误

    环境 Ubuntu 14 04 hadoop 2 2 0 hbase 0 98 7 当我启动hadoop和hbase 单节点模式 时 都成功 我还检查了hadoop的网站8088 hbase的网站60010 jps 4507 Seconda
  • 如果别名会降低运行时性能,为什么编译器要执行别名?

    我出于纯粹的兴趣而学习 C 和计算机科学主题 这让我对编译器产生了兴趣 我读过的所有内容都告诉我 别名会导致程序集输出速度变慢 需要在每次迭代时重新加载值 我已经能够使用 Intel C C 编译器使用该标志在一些基准测试中获得轻微的提高
  • Javascript/jQuery执行顺序问题

    我正在使用 jQuery 尝试从 JSON 对象构建 Web 应用程序的表 使用 asyncgetJson调用 并且我很难了解执行顺序的底部 我的JS是 create table header peopleDirectory append
  • 使用 node-fetch 时无法调用类型缺少调用签名的表达式

    我想得到node fetch在我的打字稿项目中工作 import as fetch from node fetch import as assert from assert export class DatabaseConfigurator
  • CoreAnimation,在 iOS 5 Xcode 4 中使用动画阴影移动 UIImageView

    我正在尝试为图像添加类似 假 3d 的效果 UIImageView 从 A 点移动到 B 点 在此移动过程中我希望在 C A B 2 点处使其具有最大的阴影尺寸 或较大的阴影偏移 所以看起来又在上下移动 当我尝试改变阴影大小时 它没有动画