如何使用 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 将快照划分为多个片段,以便让用户与每个片段进行交互?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:如何在控制器的几种方法中重用代码片段

Xcode 7.3 如何将我现有的 iPhone 应用程序转换为通用应用程序,以便在 iOS 中与 iPad 一起使用

在代码片段中包含类型转换

如何将webview内容划分为多个页面

我有一个Xcode静态库项目,如何添加测试目标,以便我可以在那里运行它? (而不是在链接到它的项目中。)

使用 StoryBoard 在 Xcode 中命名多个视图