【问题标题】:How to determine image coordinates for a large cropped image within a UIImageView?如何确定 UIImageView 中大裁剪图像的图像坐标?
【发布时间】:2010-12-21 06:28:31
【问题描述】:

关于 iPhone SDK:

我有一个 512 x 512 像素的 .png 图像,我想在 200 x 200 像素的 UIImageView 中显示它,并进行裁剪(以原始分辨率,不进行缩放、拟合或旋转)。有没有办法确定在 UIImageView 中可见的图像坐标?

例如,如果图像在 UIImageView 的确切中心,那么我想知道图像在 UIImageView 的 (0,0) 和 (200,200) 点的坐标是什么,即 (156,156) 和 ( 356,356),分别用于正在显示的图像。

我计划在某个时候实现“平移”和“缩放”功能,但我想知道如何首先解决这个问题。 UIImageView 类参考似乎没有帮助...我希望避免使用 UIView,但如果有必要,我会走那条路。

谢谢!

【问题讨论】:

    标签: iphone objective-c uiimageview uiimage


    【解决方案1】:

    您从 UIImageView 参考中看到的内容是正确的 - 单独使用 UIImageView 没有简单的方法可以做到这一点。您需要考虑诸如 UIImageView 的 contentMode 之类的事情,或者将自己限制为仅计算单个 UIViewContentMode 的位置。

    但是,当您最终实现平移和缩放时,您将使用带有 UIImageView 的 UIScrollView 作为该 UIScrollView 的子视图。那时,将您的 UIImageView 最初调整为您显示的任何图像的大小(可能是动态的)是最明智的。然后,您可以通过确定图像 view 的位置来确定图像的位置,这可以更简单地完成,并且只需要一点数学。

    【讨论】:

      【解决方案2】:

      感谢您的帮助。实现 UIScrollView 后,制定平移/缩放功能变得微不足道。实现 UIScrollView 让我可以使用 myScrollView.bounds.origin.xmyScrollView.bounds.origin.y 值确定我需要的坐标...缩放仍然需要计算 - 正如你上面所说的,但我现在走在正确的轨道上。

      这是我用来制作 UIScrollView 的代码(基于网络上的多个可用资源和这个站点 - Apple 的 ScrollViewSuite 特别有用。这是我在程序的 (void)viewDidLoad 部分使用的代码,希望其他人会发现它有用:

      UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[imageArray objectAtIndex:0]]; //imageArray is an array/stack of images...
      [self setMyImage:tempImageView]; //myImage is of type UIImageView
      [myImage setTag:100]; //set this to an 'arbitrary' value so that when I update the scrollview I can remove the current image...
      [tempImageView release];
      
      myScrollView.contentSize = CGSizeMake(myImage.frame.size.width, myImage.frame.size.height);
      myScrollView.maximumZoomScale = 10.0;
      myScrollView.minimumZoomScale = 0.15;
      myScrollView.clipsToBounds = YES;
      myScrollView.delegate = self;
      
      [myScrollView addSubview:myImage];
      

      【讨论】:

        猜你喜欢
        • 2016-02-06
        • 1970-01-01
        • 1970-01-01
        • 2015-08-18
        • 2016-12-09
        • 2019-07-19
        • 2021-11-06
        • 1970-01-01
        相关资源
        最近更新 更多