17

我有一个UIImageView显示更大图像的。它似乎居中,但我想将该图像移到UIImageView. 我查看了来自 Apple 的MoveMe示例,但我无法弄清楚他们是如何做到的。似乎他们甚至没有 UIImageView 。有任何想法吗?

4

7 回答 7

27

您需要的是类似的东西(例如显示原始图像左上角的 30% x 30%):

imageView.layer.contentsRect = CGRectMake(0.0, 0.0, 0.3, 0.3);

“contentsRect”的描述:单位坐标空间中的矩形,它定义了应该使用的图层内容部分。

于 2014-04-08T00:22:51.873 回答
19

原始答案已被 iOS4 中的 CoreAnimation 取代。

所以正如 Gold Thumb 所说:你可以通过访问 UIView 的 CALayer 来做到这一点。特别是它的contentRect:

来自Apple Docs:单位坐标空间中的矩形,它定义了应该使用的图层内容部分。动画。

于 2009-04-02T19:23:23.813 回答
12

您想显示图像以使其包含在 UIImageView 中吗?在这种情况下,只需将 UIImageView 的 contectMode 更改为 UIViewContentModeScaleToFill (如果纵横比无关紧要)或 UIViewContentModeScaleAspectFit (如果您想保持纵横比)

在 IB 中,这可以通过在 Inspector 中设置 Mode 来完成。

在代码中,它可以完成为

yourImageView.contentMode = UIViewContentModeScaleToFill;

如果您想在 UIImageView 中显示大图像,最好和最简单的方法是将图像视图放在 UIScrollView 中。这样您就可以放大和缩小图像并四处移动。

希望有帮助。

于 2009-04-03T07:39:20.177 回答
4

听起来 MoveMe 示例并没有像您想要的那样做任何事情。其中的 PlacardView 与使用的图像大小相同。对其进行的唯一大小更改是视图变换,它不会影响图像的视口。据我了解,您有一张大图片,并希望在其中显示一个小视口。没有一个简单的类方法可以做到这一点,但有一个函数可以用来获得所需的结果:CGImageCreateWithImageInRect(CGImageRef, CGRect) 会帮助你。

这是一个使用它的简短示例:

CGImageRef imageRef = CGImageCreateWithImageInRect([largeImage CGImage], cropRect);
[UIImageView setImage:[UIImage imageWithCGImage:imageRef]];
CGImageRelease(imageRef);
于 2009-04-03T04:25:14.853 回答
3

非常感谢。我找到了一个非常简单的解决方案,如下所示:

CGRect frameRect = myImage.frame;
CGPoint rectPoint = frameRect.origin;
CGFloat newXPos = rectPoint.x - 0.5f;
myImage.frame = CGRectMake(newXPos, 0.0f, myImage.frame.size.width, myImage.frame.size.height);

我只是移动框架。碰巧该帧的某些部分超出了 iPhone 的视口,但我希望这不会有太大影响。它上面有一个面具,所以它看起来并不奇怪。用户不知道它是如何完成的。

于 2009-04-03T13:48:16.887 回答
0

您可以通过以下方式完成相同的操作:

UIImageView *imgVw=[[UIImageView alloc]initwithFrame:CGRectMake(x,y,height,width)];     
imgVw.image=[UIImage imageNamed:@""];
[self.view addSubView imgVw];
imgVw.contentMode = UIViewContentModeScaleToFill;
于 2012-04-10T05:32:55.683 回答
0

您可以使用NSLayoutConstraint来设置 的位置UIImageView,它可以相对于其他元素或相对于框架。这是一个示例片段:

let logo = UIImage(imageLiteralResourceName: "img")
        let logoImage = UIImageView(image: logo)
        logoImage.translatesAutoresizingMaskIntoConstraints = false
        self.view.addSubview(logoImage)
        NSLayoutConstraint.activate([logoImage.topAnchor.constraint(equalTo: view.topAnchor,constant: 30),
                                     logoImage.centerXAnchor.constraint(equalTo: view.centerXAnchor),logoImage.widthAnchor.constraint(equalToConstant: 100),logoImage.heightAnchor.constraint(equalToConstant: 100)
                                     ])

这样,您还可以轻松调整图像大小。常量参数表示,某个锚点相对于指定锚点应该定位多远。
考虑到这一点,
logoImage.topAnchor.constraint(equalTo: view.topAnchor,constant: 30) 上面的行将实例的顶部锚点设置logoImage为父视图下方的 30(常量)。负值表示相反的方向。

于 2021-04-12T07:43:28.973 回答