如何在触摸时旋转图像并将图像拖动到另一个图像上

2024-04-28

我正在开发一个应用程序,我需要一个包含许多图像的图库。我想要做的是,当用户点击/单击任何图像时,它应该将该图像旋转到 90 度,如果用户将任何图像拖动到任何其他图像的顶部,那么这些图像应该交换它们的位置(或者我们可以说交换)彼此的位置)。

解释:

A B C

D E F

假设上面是我的画廊的图像,所以如果用户将图像 A 拖动到图像 E 的顶部,那么画廊应该如下所示

E B C

D A F

我正在使用 UICollectionView 来制作我的画廊。这是我到目前为止所做的。

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.imageArray = [NSArray arrayWithObjects:@"angry_birds_cake.jpg", @"creme_brelee.jpg", @"egg_benedict.jpg", @"full_breakfast.jpg", @"green_tea.jpg", @"ham_and_cheese_panini.jpg", nil];

    [self.collectionView registerClass:[ClosetsCell class] forCellWithReuseIdentifier:@"ClosetsCell"];
    [self.collectionView setPagingEnabled:YES];

    // Configure layout
    UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
    [flowLayout setItemSize:CGSizeMake(100, 100)];
    [flowLayout setScrollDirection:UICollectionViewScrollDirectionVertical];
    [self.collectionView setCollectionViewLayout:flowLayout];
}

-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
        return [self.imageArray count];
}

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {

    // Setup cell identifier
    static NSString *cellIdentifier = @"ClosetsCell";

    ClosetsCell *cell = (ClosetsCell *)[collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];

    cell.imageView.image = [UIImage imageNamed:[self.imageArray objectAtIndex:indexPath.row]];
    cell.selectedBackgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"checked.png"]];

    // Return the cell
    return cell;

}

-(CGFloat) collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section
{
    return 1;
}

-(CGFloat) collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section
{
    return 4;
}

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellIdentifier = @"ClosetsCell";

    ClosetsCell *cell = (ClosetsCell *)[collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];

    printf("Selected View index=%d",indexPath.row);

    cell.imageView.transform = CGAffineTransformMakeRotation(M_PI_2);

}

但我不认为 CGAffineTransform MakeRotation 在我的案例中起作用。


就旋转而言,实现此目的的方法如下:

CGAffineTransform rotation = CGAffineTransformMakeRotation(M_PI / 2.0);

/* If you want an animation
[UIView beginAnimations: @"" context: NULL];
[UIView setAnimationDuration: 0.3];
*/

cell.imageView.transform = CGAffineTransformConcat(cell.transform, rotation);

/*[UIView commitAnimations];*/

The CGAffineTransformMakeRotation参数是角度,可以让你按照你想要的方式旋转。 M_PI / 2.0 表示左旋转,M_PI / -2.0 右旋转,角度 0 将使您返回纵向。如果您的实现想要在单击单元格时来回旋转,您可以实现如下所示:

CGAffineTransform leftRotation = CGAffineTransformMakeRotation(M_PI / 2.0);
CGAffineTransform portraitRotation = CGAffineTransformMakeRotation(0.0);

if (CGAffineTransformEqualToTransform(leftRotation, cell.imageView.transform)){
    cell.imageView.transform = CGAffineTransformConcat(cell.transform, portraitRotation);
}
else if (CGAffineTransformEqualToTransform(portraitRotation, cell.imageView.transform)){
    cell.imageView.transform = CGAffineTransformConcat(cell.transform, leftRotation);
}

现在对于你的第二个问题,切换单元格,我从未使用过 UICollectionViews 但我认为你应该研究一下- (void)moveItemAtIndexPath:(NSIndexPath *)indexPath toIndexPath:(NSIndexPath *)newIndexPath当拖动结束时(通过检查拖动开始和拖动结束的索引路径)。

根据苹果文档 https://developer.apple.com/library/ios/documentation/uikit/reference/UICollectionView_class/Reference/Reference.html#//apple_ref/occ/instm/UICollectionView/moveItemAtIndexPath:toIndexPath:它是用来处理 UI 操作的方法。

使用此方法重新组织现有数据项。你可能会这样做 当您重新排列数据源对象中的项目或 响应用户与集合视图的交互。

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

如何在触摸时旋转图像并将图像拖动到另一个图像上 的相关文章

  • 如何读取 Xcode 6.1 Instruments .trace 文件?

    我一直在尝试阅读 trace文件 我使用生成的custom仪器模板 仪器 自动机 分配 Leaks using 仪器 https developer apple com library mac documentation Developer
  • 如何使用存储在 Cocoa Touch 框架中的 Localized.strings?

    我想为 CocoaTouch 框架添加多语言支持 问题 可本地化的字符串我创建的文件仅被使用NSLocalizedString当它是主应用程序及其目标的一部分时 我想将其存储在框架内以将事物分开 我怎样才能使用可本地化的字符串当放置在 Co
  • React Native ios运行问题

    我是反应本机和运行新手yarn ios我的 React Native 项目不断失败并出现以下错误 构建失败 以下构建命令失败 编译C Users gift Library Developer Xcode DerivedData gainer
  • 具有透明背景的 Swift 模态视图控制器 [重复]

    这个问题在这里已经有答案了 我知道这个话题很受欢迎 但我在编程语言中遇到了一些问题 事实是我仍然不明白我把代码放在哪里 好吧 我就来说说整个案子 我正在尝试制作一个与正常情况稍有不同的模态 Swift 通过单击按钮 ViewControll
  • 如何在 Safari 上打开本地 html 文件?

    我想打开本地 html 文件Safari集成到我的Swift 3应用 我知道如何使用网址来做到这一点 这是我用来执行此操作的代码 let encodedString url addingPercentEncoding withAllowed
  • xcode“将源编译为”覆盖特定文件

    我有一个项目 必须将 编译源为 值设置为 Objective C 不 根据文件类型 在我的主项目中不起作用 我从框架 特别是 OpenFeint 获得的文件有问题 该文件在编译为 Objective C 时出现编译错误 error poin
  • Mapkit 在 IOS 13 中使用过多的 CPU

    最近 在一些用户更新到 iOS 13 x 后 我的 iOS 应用程序开始频繁崩溃 在 iOS 12 x 中没有出现该问题 我正在使用 Mapkit 渲染一些 MKPolygons 和 MKPolylines MKPolylines 被删除并
  • 如何在 iOS 中设置视图的最大宽度?

    我的应用程序有一个基本的登录屏幕 一个外框以及其中的一些文本字段和按钮 我将框设置为填满屏幕 然而 在某些设备上这个盒子会太大 如何设置视图的最大宽度和高度 您可以使用自动布局约束 使框适应屏幕尺寸 但不超过给定的宽度和高度 为此 请对宽度
  • 以编程方式检测应用程序是否正在设备或模拟器上运行

    我想知道我的应用程序在运行时是在设备还是模拟器上运行 有没有办法检测到这一点 原因是用模拟器测试蓝牙 api http volcore limbicsoft com 2009 09 iphone os 31 gamekit pt 1 woo
  • 如何避免 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
  • 如何使自定义绘制的 UITableViewCell 正确调整大小?

    出于性能原因 我在自定义视图中绘制 UITableViewCell 的字符串 该视图重写其 drawRect 方法 以使用 NSString drawInRect 直接在视图矩形中绘制字符串 这类似于 Apple 的 TableViewSu
  • Excel 工作表到 iPhone 数据 -- A 点到 B 点

    尽可能简单 我有一个非常简单的 Excel 电子表格 只有 1000 多条记录 我想将其用作 iPhone 应用程序的静态数据源 最好的进攻计划是什么 我心中的可能性 1 直接读取XLS作为数据源 是否有Obj C库用于此 2 将XLS 转
  • Swift - 将图像插入 PDF 不再适用于 iOS 13

    目前正在开发在我的贷款计算器应用程序上导出 PDF 的功能 我有一个预览屏幕 可以在您保存 PDF 之前显示它 预览屏幕由带有 html 的 webView 组成 其中包含占位符 我能够成功地将图像插入到正确的占位符上 并将其显示在 PDF
  • Xamarin.Forms DataTemplateSelector 不适用于 iOS(未调用构造函数)

    我正在膨胀数据模板选择器 如下所示
  • 比较 Objective C 中的 NSNumber

    我是 Objective C 的初学者 对这种情况有点困惑 我有以下代码 if number1 lt number2 NSLog THE FOLLOWING NUMBER NSLog number1 NSLog IS LESS THAN N
  • 使用 NSFileHandle 覆盖数据

    使用 NSFileHandle 使用 truncateFileAtOffset 从文件末尾删除 n 个字符非常容易 void removeCharacters int numberOfCharacters fromEndOfFile NSF
  • 在移动网站中处理 iPhone 事件(如向左滑动)

    iPhone 浏览器是否有可以使用 Javascript 挂钩的特殊事件 例如 如果用户向左滑动 我想执行某个操作 如果有类似的活动 很高兴看到所有这些活动的参考 理想情况下 有一天所有触摸屏移动浏览器都会有一个标准 您可以访问多点触控事件
  • 如何在运行仅 iPhone 应用程序(非通用)的 iPad 上的 UIPickerView 中支持 VoiceOver?

    一般来说 我会查看 Apple 的 UICatalog 示例代码以获取基本的 VoiceOver 支持 但示例代码中似乎有对 UIPickerViews 的 VoiceOver 支持 我是否需要在某处提供accessibilityLabel
  • 弱变量中间为零

    弱变量什么时候变为零 weak var backgroundNode SKSpriteNode texture SKTexture image initialBackgroundImage backgroundNode position C

随机推荐

  • 测试类内的扩展函数

    如果我们想测试某个类型的扩展函数 我们可以创建该类型的实例 调用该函数并检查返回值 但是测试类内部定义的扩展函数又如何呢 abstract class AbstractClass
  • 区分缺失值类型(无响应与跳过模式)

    对于可能没有仔细阅读密码本的数据集用户 您会建议如何区分缺失值类型 在这个玩具示例中 q2只询问那些回答 是 的人q1 这意味着有一个缺失值q2因为该人没有回应而缺失 并且有两个缺失值q2因为没有提出问题所以丢失了 library tidy
  • 如何在Java NIO中配置socks代理

    我正在开发一个工具 其中包括强制应用程序的所有网络流量通过Java中的socks代理 对于旧的 Socket API 我只需设置系统属性 DsocksProxyHost my host DsocksProxyPort my port 但它不
  • 如何删除 R 中字符向量中字符串的公共部分?

    假设一个字符向量如下 file1 p1 analysed samples txt file1 p1 raw samples txt f2 file2 p1 analysed samples txt f3 file3 p1 raw sampl
  • ReportViewer控件加载指示器?

    是否可以更改 ReportViewer 控件的图像 绿色旋转的东西 目前我正在隐藏它并重叠进度条 这是 WinForms 而不是 ASP 控件 似乎有点啰嗦 Thanks 好吧 我的朋友 你给了我一个挑战 但我想出了如何做到这一点 这是我用
  • 有没有一种简单的方法可以将我的苹果应用程序转换为安卓应用程序?

    我是一名应用程序开发人员 我使用 Xcode 来开发我的所有应用程序 但看到当今市场上很多人都拥有非苹果设备 所以我想我想知道是否有一种简单的方法可以将我的苹果应用程序代码转换为Android格式 以便我可以提交到两个市场 Android
  • 在 systemd 服务文件内/内联添加 shell 命令

    我正在运行gunicorn通过 systemd 将服务器作为服务 这是示例service file Unit Description Gunicorn NGINX After network target Service User root
  • Curl下载到HDFS

    我有这个代码 curl o fileName csv url xargs hdfs dfs moveFromLocal 1 somePath 当我执行此代码时 curl 将请求中的值放入 fileName csv 中 该文件将移动到 HDF
  • 如何在小部件中使用列表视图? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试创建一个从 rss feed 加载到小部件中的列表视图 有谁知道如何在小部件中使用列表视图的教
  • 学习 BDD、TDD(ruby、C#、javascript)的好资源

    学习 BDD 和 TDD ruby C javascript 有哪些好的资源 现在用什么好的框架 See 为什么我应该练习测试驱动开发以及应该如何开始 https stackoverflow com questions 4303 why s
  • 使用VBA抓取实时数据

    我想从中抓取实时数据https iboard ssi com vn bang gia hose https iboard ssi com vn bang gia hose使用VBA 我的代码如下 但它不会返回其中包含数据的 html 文件
  • 什么是依赖注入的 Pythonic 方式?

    介绍 对于 Java 依赖注入作为纯 OOP 工作 即您提供要实现的接口 并在框架代码中接受实现定义的接口的类的实例 现在对于 Python 您可以执行相同的操作 但我认为该方法对于 Python 而言开销太大 那么如何以 Pythonic
  • Swashbuckle IDocumentFilter 实现 - 如何将 ActionDescriptor.MethodInfo 链接到操作

    项目 ASP Net Core 2 2 Web API 软件包 Swashbuckle AspNetCore 4 0 1 我正在写一个实现Swashbuckle AspNetCore SwaggerGen IDocumentFilter它在
  • 缓慢的 data.frame 行分配

    我正在使用 RMongoDB 需要用查询的值填充空的 data frame 结果相当长 大约有 200 万个文档 行 当我进行性能测试时 我发现将值写入行的时间随着数据帧的维度的增加而增加 也许这是一个众所周知的问题 而我是最后一个注意到它
  • 当元素被覆盖时取消 mouseout 事件

    希望这个 JSFiddle 能比我的话更好地说明这个问题 http jsfiddle net pmwRc 6 http jsfiddle net pmwRc 6 当地图悬停时 我在图像地图上显示绝对定位的 H4 作为标签 但是 当鼠标指针移
  • $.fn.function 的调用函数

    问题如下 有一个函数自定义 jquery 函数 里面有另一个函数 例如 fn slides function args function foo args 我现在的问题是 我如何调用方法 foo foo不是一种方法 这是一个本地函数 除非您
  • 字符串等于和 == 与字符串连接[重复]

    这个问题在这里已经有答案了 我试图理解字符串连接与字符串比较的输出 需要明确的是 我有一个类使用 和 equals 来比较两个字符串 我试图将 和 equals 的输出连接到一个字符串 equals 的输出是 concats 但是 的输出是
  • Android Fragment onCreateView 与 onActivityCreated

    我知道片段的视图层次结构必须在 onCreateView 中膨胀 但是 onCreateView 中还可以包含哪些其他功能 而不是应该等待 onActivityCreated 我当前的实现对所有内容都使用单独的活动 典型的活动在其 onCr
  • PHP 路由 - 样式表无效

    我用 PHP 创建了一个基本的路由系统 url 被分割成一个数组 这样我就可以根据 URL 决定显示什么 例如 www domain com page option param 因此 在我的index php 中 我为页眉 内容和页脚定义了
  • 如何在触摸时旋转图像并将图像拖动到另一个图像上

    我正在开发一个应用程序 我需要一个包含许多图像的图库 我想要做的是 当用户点击 单击任何图像时 它应该将该图像旋转到 90 度 如果用户将任何图像拖动到任何其他图像的顶部 那么这些图像应该交换它们的位置 或者我们可以说交换 彼此的位置 解释