如何使用 xcode 将快照划分为多个片段,以便让用户与每个片段进行交互?
Posted
技术标签:
【中文标题】如何使用 xcode 将快照划分为多个片段,以便让用户与每个片段进行交互?【英文标题】:How can i divide a snapshot into pieces with xcode so that i can make the user interact with each of the pieces? 【发布时间】:2012-10-09 00:49:16 【问题描述】:我的应用程序的要求是它需要拍照,然后将它分成几块。例如,有 8 行和 8 列。我可能将行命名为 A 到 H,而我可能将列命名为从 1 到 8。假设单击图片后的用户选择 A1,代码应该能够缩放 A1 并为他提供执行操作的选项一些事情,比如放置一些符号或从可用选项中标记一些东西。我如何实现 1) 拆分 2) 缩放 3) 以小徽标的形式向用户提供各种符号?我对 iphone 编程很陌生,发现有一个名为 UIImagePickerController 的类可以帮助你,但我不知道如何实现 1,2 和 3。请帮助我。
【问题讨论】:
1.使用 UIImage 和 CoreGraphics。谷歌“裁剪 UIImage”。 2. 你将如何呈现放大的片段?在同一屏幕上还是会在新视图中推送? 3. 什么样的符号?小图?使用许多 UIImageViews 并为它们捕获拖动事件。最后,向我们展示一些代码,以便我们可以帮助您解决问题。没有人会为您编写代码。 我没有准备好代码,因为我正处于计划阶段。这就是为什么要寻找资源以了解如何实现这些步骤。你能帮帮我吗? @AndreyChevozerov 2) 放大的目的是让用户在该区域放置各种符号。考虑图片由 3x3 9 个单位组成,因此行从 A-C 命名,列从 1-3 命名,因此 A1 应该出现并允许用户放置类似三角形符号的东西。现在三角形符号可以表示密度或亮度之类的东西。每个符号都有其自身的含义。 @AndreyChevozerov 3) 符号 - 三角形、圆形、正方形等 【参考方案1】:好吧,为了将图像分成几块,您应该使用以下代码(将其放在UIImage
类别中):
- (UIImage *)imageCroppedWithRect:(CGRect)rect
if (self.scale > 1.0f)
rect = CGRectMake(rect.origin.x * self.scale,
rect.origin.y * self.scale,
rect.size.width * self.scale,
rect.size.height * self.scale);
CGImageRef imageRef = CGImageCreateWithImageInRect(self.CGImage, rect);
UIImage *result = [UIImage imageWithCGImage:imageRef scale:self.scale orientation:self.imageOrientation];
CGImageRelease(imageRef);
return result;
现在您将拥有一些图像,并且应该使用这些图像创建适当数量的UIImageViews
。然后根据您想让用户缩放的方式添加UITapGestureRecognizer
,例如。对于缩放,您可以添加隐藏的UIImageView
,当点击该片段时使用以下代码:
- (void)pieceTapped:(UITapGestureRecognizer *)recognizer
UIImageView *piece = recognizer.view;
self.zoomedImageView.frame = piece.frame;
self.zoomedImageView.image = piece.image;
self.zoomedImageView.hidden = NO;
[UIView animationWithDuration:0.3 animation:^
self.zoomedImageView.frame = self.view.frame;
];
现在您应该只将符号放置在该图像上。但是你想怎么做呢?从某处或自动拖放图像?将符号永久放置到图像上还是仅放置在图像上?
【讨论】:
以上是关于如何使用 xcode 将快照划分为多个片段,以便让用户与每个片段进行交互?的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 7.3 如何将我现有的 iPhone 应用程序转换为通用应用程序,以便在 iOS 中与 iPad 一起使用