通过触摸停止和启动动画。目标C

2024-02-08

我制作了一个在屏幕上移动的动画,我的动画连续循环。如何在点击动画图像时停止动画,然后在松开触摸时让动画继续?

我知道如何使用 TouchesMoved 来移动指定的按钮,如下所示:

CGPoint point = [[[event allTouches] anyObject] locationInView:self.view];
UIControl *control = sender;
control.center = point;

但让它与我的动画一起工作。我希望动画在我触摸它后继续播放。

SelectedCellViewController.h

//  SelectedCellViewController.h

#import <Accounts/Accounts.h>
#import <QuartzCore/QuartzCore.h>

@interface SelectedCellViewController : UIViewController {
IBOutlet UIImageView *imageView;
UIImageView *rocket;
}

@end

viewControllertoShow.m

#import "SelectedCellViewController.h"

@interface SelectedCellViewController ()

@end

@implementation SelectedCellViewController


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) {
}
return self;
}

- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}

#pragma mark - View lifecycle

- (void)viewDidLoad {

[super viewDidLoad];

[self performSelector:@selector(imageSpawn:) withObject:nil afterDelay:3];

}

- (void) imageSpawn:(id) sender
{

UIImage* image = [UIImage imageNamed:@"ae"];
rocket = [[UIImageView alloc] initWithImage:image];
rocket.frame = CGRectMake(-25, 200, 25, 40);
[UIView animateWithDuration:5
                      delay:0.2f
                    options:UIViewAnimationCurveEaseInOut | UIViewAnimationOptionRepeat | UIViewAnimationOptionAutoreverse
                 animations:^(){rocket.frame=CGRectMake(345, 200, 25, 40);}
                 completion:^(BOOL fin) {
                 }];

[self.view addSubview:rocket];
UITapGestureRecognizer *tapped = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(ballTapped:)];
tapped.numberOfTapsRequired = 1;
[rocket addGestureRecognizer:tapped];
[rocket setUserInteractionEnabled:YES];


}

-(void)ballTapped:(UIGestureRecognizer *)gesture
{
CGPoint location = [gesture locationInView:gesture.view];

//then write code to remove the animation
[self.view.layer removeAllAnimations];
NSLog(@"Tag = %d", gesture.view.tag);
rocket.frame = CGRectMake(location.x,location.y,25,40);
}

- (void)dismissView {
[self dismissViewControllerAnimated:YES completion:NULL];
}

- (void)viewDidUnload {

}

@end

正如您在问题中已经指出的那样,您可以使用以下方法获取触摸点

CGPoint point = [[[event allTouches] anyObject] locationInView:self.view];

然后检查该点是否位于动画的坐标内UIImageview然后停止动画。 但是如果你使用scrollview,你将无法使用它,因为scrollview不会返回任何UIView触摸事件。

当您的图像视图具有动画效果时,更好的选择是在添加子视图时将 UITapGestureRecogniser 添加到图像视图,如下所示

- (void) imageSpawn:(id) sender
{

UIImage* image = [UIImage imageNamed:@"ae"];
UIImageView *rocket = [[UIImageView alloc] initWithImage:image];
rocket.frame = CGRectMake(-25, 200, 25, 40);
[UIView animateWithDuration:5
                      delay:0.2f
                    options:UIViewAnimationCurveEaseInOut | UIViewAnimationOptionRepeat | UIViewAnimationOptionAutoreverse
                 animations:^(){rocket.frame=CGRectMake(345, 200, 25, 40);}
                 completion:^(BOOL fin) {
                 }];

[myScrollView addSubview:rocket];
UITapGestureRecognizer *tapped = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(ballTapped:)];
    tapped.numberOfTapsRequired = 1;
    [self.rocket addGestureRecognizer:tapped];
    [rocket setUserInteractionEnabled:YES];
}

并在目标函数中编写代码来停止动画:

    -(void)ballTapped:(UIGestureRecognizer *)gesture
    {
    //here also you can get the tapped point if you need
        CGPoint location = [gesture locationInView:gesture.view];

    //then write code to remove the animation
        [self.view.layer removeAllAnimations]; 
     }

EDIT:

如果您尝试在触摸点停止图像视图,可以将其添加到 ballTapped 事件:

rocket.frame = CGRectMake(location.x,location.y,25,40);

但为此你必须声明UIImageView *rocket在此特定方法之外,即在头文件中声明。

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

通过触摸停止和启动动画。目标C 的相关文章

  • 小视频播放

    根据我从互联网收集的信息 MPMoviePlayerController 类不支持小视频播放 因此 为了死马当活马医 我想知道可以使用什么样的方法来让小视频在屏幕的一角播放 而不中断屏幕的其余部分 到目前为止 我们已经遇到了两种可行的解决方
  • 启动使用 Simperium 的应用程序时 objectFromJSONString 崩溃

    我得到了一个JSON当我尝试启动使用 Simperium 框架的应用程序时崩溃 NSCFString objectFromJSONString unrecognized selector sent to instance 0x6c561a0
  • 使用 Metal 高效计算 UIImage/CIImage 中有多少透明像素

    我们可以计算有多少个透明像素的最快方法是什么CIImage UIImage 例如 如果我们谈论效率 我的第一个想法是使用Metal Kernel使用任一CIColorKernel左右 但我不明白如何使用它来输出 计数 我还有其他想法 使用某
  • 从基元创建自定义形状

    我正在尝试通过组合原始形状来创建自定义物理形状 目标是创建一个圆形立方体 合适的方法似乎是初始化 形状 变换 我在这里找到的https developer apple com library prerelease ios documenta
  • 在 iOS 8 中创建通话/双高状态栏?

    是否有调用自定义通话 双高状态栏的标准方法 如果没有 那么构建我自己的功能的最佳起点是哪里 我知道关于如何做到这一点存在一些多年的问题 但没有任何令人满意的答案 有什么新方法可以做到这一点吗 可能在 iOS 8 中 这里没有什么新鲜事 但我
  • React Native ios运行问题

    我是反应本机和运行新手yarn ios我的 React Native 项目不断失败并出现以下错误 构建失败 以下构建命令失败 编译C Users gift Library Developer Xcode DerivedData gainer
  • xcode“将源编译为”覆盖特定文件

    我有一个项目 必须将 编译源为 值设置为 Objective C 不 根据文件类型 在我的主项目中不起作用 我从框架 特别是 OpenFeint 获得的文件有问题 该文件在编译为 Objective C 时出现编译错误 error poin
  • 通过应用程序组在应用程序之间通信和保存数据

    iOS 8 昨天发布了一个有关应用程序组的新 API 以前在应用程序之间共享数据和通信有点混乱 我相信这正是应用程序组旨在纠正的问题 在我的应用程序中 我启用了应用程序组并添加了一个新组 但我找不到任何有关如何使用它的文档 文档和 API
  • 如何在 Xamarin.iOS 应用程序中创建导航?

    我习惯于与Xamarin Forms 我用 XAML 或 C 创建一个页面并导航到它 但现在这是我第一次尝试创建一个不适合的 iOS 应用程序Xamarin Forms 我在 Windows PC 上的 Visual Studio 中进行此
  • 如何在 iOS 中设置视图的最大宽度?

    我的应用程序有一个基本的登录屏幕 一个外框以及其中的一些文本字段和按钮 我将框设置为填满屏幕 然而 在某些设备上这个盒子会太大 如何设置视图的最大宽度和高度 您可以使用自动布局约束 使框适应屏幕尺寸 但不超过给定的宽度和高度 为此 请对宽度
  • Cordova - 启动后出现白屏,控制台中没有例外

    我已经离开我的 Cordova 应用程序一段时间了 但昨天刚刚进行了一次新的克隆 发现它出现了 死机白屏 症状 启动画面显示 程序加载 然后我就得到一个空白屏幕 更多细节 CLI 科尔多瓦 6 1 1 安卓 5 1 1 ios 4 1 1
  • 将 UIRefreshControl 用于 UIWebView

    我在 iOS 6 中看到了 UIRefreshControl 我的问题是是否可以通过下拉来刷新 WebView 而不是像在邮件中那样让它弹出 我使用 rabih 的代码是 WebView UIRefreshControl refreshCo
  • 如何将 CIFilter 输出到相机视图?

    我刚刚开始使用 Objective C 我正在尝试创建一个简单的应用程序 它显示带有模糊效果的相机视图 我得到了与 AVFoundation 框架一起使用的相机输出 现在 我正在尝试连接 Core 图像框架 但不知道如何连接 Apple 文
  • 如何避免 NSNumberFormatter 中的四舍五入

    我试图拥有一个最大精度为 2 位小数的数字字符串 而其余小数只是被修剪掉而不是四舍五入 例如 I have 123456 9964 I want 123456 99 gt Just want to trim rest of the deci
  • iOS JPEG 图像旋转 90 度

    我正在使用选择器视图从相册中选择图像 我使用上面的代码 void imagePickerController UIImagePickerController picker didFinishPickingMediaWithInfo NSDi
  • 调用了 numberOfRowsInSection 但未调用 cellForRowAtIndexPath

    在我的表视图中节中的行数被调用两次但是cellForRowAtIndexPath不叫 我想在 tableView 中显示 Facebook 好友列表 如果 cellForRowAtIndexPath 调用我的问题就解决了 我在这里的数组中得
  • Apple 如何在机场菜单打开时更新它? (当 NSMenu 已经打开时如何更改它)

    我有一个状态栏项目 可以弹出一个 NSMenu 并且我有一个委托集 并且它已正确连接 void menuNeedsUpdate NSMenu menu工作正常 也就是说 该方法设置为在显示菜单之前调用 我需要监听该方法并触发异步请求 稍后在
  • 如何检测 UISearchBar/UITextField 输入中的暂停?

    我有以下 UISearchbar 代码 void searchBar UISearchBar searchBar textDidChange NSString searchText UIApplication sharedApplicati
  • 弱变量中间为零

    弱变量什么时候变为零 weak var backgroundNode SKSpriteNode texture SKTexture image initialBackgroundImage backgroundNode position C
  • 是否可以在增强现实应用程序中使用自定义 iOS UI 元素(例如 UILabel)

    我想知道是否可以使用像这样的 UI 元素UIButton UILabel在带有 ARKit 的增强现实应用程序中 如果您也对 UIView 子类的透明度模式感兴趣 请尝试我的示例https github com erikhric ar me

随机推荐

  • 在缓存中找不到元素 - 也许页面自从在 Selenium Ruby Web 驱动程序中查找后已发生更改?

    我正在尝试编写一个爬虫 它可以从加载的页面中爬取所有链接 并在某个文件 例如 XML 或 txt 中记录所有请求和响应标头以及响应正文 我正在新浏览器窗口中打开第一个加载页面的所有链接 因此不会出现此错误 Element not found
  • 嵌入共享库的绝对路径

    使用供应商提供的交叉编译工具链 显然是 OpenEmbedded 衍生品 我无法嵌入第三方 开源 内部编译 库的绝对路径 使用以下 gcc 命令行 arm linux gcc test connect send o gprs connect
  • VBA计算文件内容的MD5哈希值

    我需要一个 VBA 例程来计算文件内容的 MD5 哈希值 我找到了一些例子 例如 here https stackoverflow com questions 2826302 how to get the md5 hex hash for
  • 随机 2D 坐标生成

    我需要生成2D随机坐标并找到距一个中心位置的距离 import numpy as np import matplotlib pyplot as plt coords np random random integers 0 50 10 pri
  • 快速搜索高斯核中最大值的坐标

    我有一个简单的代码 可以使用以下命令生成 2D 高斯内核scipy stats gaussian kde http docs scipy org doc scipy 0 13 0 reference generated scipy stat
  • 在一个 ASP.NET MVC 5 解决方案中拥有单独的项目

    我希望在一个 ASP NET 解决方案中拥有许多项目 例如 20 个 所有项目都有自己的数据库 模型 视图和控制器 你能告诉我该怎么做吗 网址又会怎样呢 如果解决方案中有一个项目 则如下所示 本地主机 12345 控制器 视图 当项目较多时
  • Perl 6 对象如何找到可能位于父类或角色中的多重方法?

    考虑这个例子 其中子类有一个没有签名的 multi 方法和一个带有 slurpy 参数的方法 class Foo multi method do it put Default multi method do it Int n put Int
  • 如何访问 Facebook 开发者应用程序?

    当我点击 Facebook 开发者应用程序 http developers facebook com apps 的链接时 我会被重定向到我的常规 Facebook 页面 社区链接 http www facebook com groups f
  • 如何使用 jQuery 替换 div 的innerHTML?

    我怎样才能实现以下目标 document all regTitle innerHTML Hello World 使用 jQuery 的地方regTitle is my div id regTitle html Hello World
  • JavaScript 中的 Java byteArray 等效项

    我正在尝试确定哪种编码方案将为 jpeg 文件类型提供数字 1 或 40 文件的起始数字 我正在开发的 REST API 需要一个类似于 1 94 43 34 等 的字节数组 在node js中 我可以将字节数组设置为十六进制或任何其他编码
  • 无法使用 Flask 路由到“/login”?

    当我打字时 login作为url 会出错 例如 from flask import Flask url for render template request app Flask name app route login def index
  • 在 Windows 7 任务栏中显示完整的应用程序?

    在 Windows 7 上 是否可以创建要在任务栏中显示的应用程序 我想到的是一个小部件 例如媒体播放器或天气部件等 像下面的模型一样 任何想法 是的 这是可能的 您正在寻找的是工具栏或有时称为 桌面带 http msdn microsof
  • React Native Navigator renderScene 被多次调用

    我已经被 RN Navigator 难住了一段时间 试图弄清楚为什么 Navigator 渲染推送到其堆栈中的所有路由 最初
  • 如何解决:该应用程序正在从后台线程修改自动布局引擎

    当代码的某些部分从主线程以外的其他线程更改 UI 项目时 此错误会记录到控制台 但我怎样才能找到它在哪里执行此操作呢 此应用程序正在从后台线程修改自动布局引擎 的主要问题是 它似乎在实际问题发生后很长时间才被记录 这可能会使故障排除变得非常
  • react-hook-form:使用 onBlur 模式时验证不起作用

    我正在尝试显示错误yup and react hook form当用户选择超过 5 个复选框但未成功时 相反 当选择第七个复选框时会显示错误 这是简化的代码 imports const schema yup object shape opt
  • 需要有关必须显示 250 000 条折线的 Google 地图应用程序的指导

    我正在为我正在开发的使用 Google 地图的应用程序寻求建议 Summary 用户具有用于搜索满足条件的街道段的条件列表 街道段将用 3 种颜色来表示 分别是低于平均水平 平均水平和高于平均水平 然后 用户单击街道路段 查看一个信息窗口
  • 如何在android中垂直均匀分布按钮/布局?

    我有一个类似于计算器的布局 每行 4 个按钮 大约有 5 行 我使用以下方法创建了每一行LinearLayout 我已经成功地通过使用完全填充了每行的宽度android layout weight 1 在每个按钮中LinearLayout
  • Flexbox:重新排序和堆叠列

    我有三列 我想在特定的屏幕尺寸下交换它们的顺序 当前的顺序是两个 1 4 宽度的列 中间有 1 2 宽度 我想将两个1 4宽度的列变成1 2宽度 并在开始时将它们堆叠起来 我可以使用浮动来复制它 但无法找到使用弹性盒的方法 我正在努力让两个
  • 替换无序列表中的值(html)+ JQuery

    D1 nav d1 span text X1 会改变 span D1 span to span X1 span
  • 通过触摸停止和启动动画。目标C

    我制作了一个在屏幕上移动的动画 我的动画连续循环 如何在点击动画图像时停止动画 然后在松开触摸时让动画继续 我知道如何使用 TouchesMoved 来移动指定的按钮 如下所示 CGPoint point event allTouches