ios - 如何在预定义的矩形中显示图像的缩放部分?

标签 ios user-interface calayer quartz-2d

我正在尝试开发一个照片应用程序,当用户在其中滑动图像时,图像的特定部分(预定义的矩形区域)会放大并缩放以适应屏幕的尺寸,并在随后的滑动中显示其他(预定义)图像的某些部分以类似的方式放大。

而且到图像其他部分的过渡应该是无缝的。

我不太熟悉 Quartz Core 框架。我应该从哪里开始?

编辑:

为了纵横比适合图像的缩放部分,我这样做了:

if (recognizer.direction == UISwipeGestureRecognizerDirectionLeft) {
    [UIView animateWithDuration:1.0 animations:^{
        self.myScrollView.frame = CGRectMake((self.view.bounds.size.width - zoomWidth) / 2, (self.view.bounds.size.height - zoomHeight) / 2, zoomWidth, zoomHeight);
        [self.myScrollView zoomToRect:CGRectMake(10, 10, zoomWidth, zoomHeight) animated:NO];
    }];
}

最佳答案

我认为您可能不需要使用 Quartz Core(用于自定义绘图)。我想到了两种实现你的案例的方法。它们将更多地是提示,因为我们对案例/架构的细节了解不多。

  1. UIScrollView 可以帮助您放大/缩小图像,并且您可以使用 contentSize、contentOffset、zoomScale 等属性将缩放“锁定”到新区域。
  2. CALayer 的contentsRect 属性非常有用,因为它仅使用您提供的图像的一部分作为图层的背景图像,并受所提供的 CGRect 约束

关于ios - 如何在预定义的矩形中显示图像的缩放部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29622072/

相关文章:

user-interface - 很棒的首次运行体验

java - Java中 "swap"一个组件的正确方法

ios - 从同一个 AVCaptureSession 创建多个 AVCaptureVideoPreviewLayer (IOS Camera) 并将它们添加到同一层

ios - 在自定义 View Controller 转换 iOS 7 期间闪烁

ios - 异步启动某些东西,然后仅在需要时等待它

java - 使 javafx 应用程序在一段时间内消失

iOS, KVO : Observer fails to track change to myObject. myCALayer.center

ios - 通过 setPosition 移动 CALayer 的奇怪行为

ios - 在应用程序中保存到手机的 Swift 图片正在旋转 90 度或 180 度

ios - 将代码中的文本分配给 UILabel! swift 2.2