是否可以设置UIImageView图像的位置?

时间:2009-04-02 17:09:58

标签: iphone image uiimageview

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

7 个答案:

答案 0 :(得分:24)

您需要的是什么(例如显示原始图像左上角的30%x 30%):

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

" contentsRect"的描述: 单位坐标空间中的矩形,用于定义应使用的图层内容部分。

答案 1 :(得分:19)

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

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

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

答案 2 :(得分:12)

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

在IB中,可以通过在Inspector中设置模式来完成此操作。

在代码中,可以将其作为

完成
yourImageView.contentMode = UIViewContentModeScaleToFill;

如果您想要在UIImageView 中显示大图像,最好和最简单的方法是将图像视图放在UIScrollView中。通过这种方式,您可以放大和缩小图像并移动它。

希望有所帮助。

答案 3 :(得分:4)

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

以下是使用它的简短示例:

CGImageRef imageRef = CGImageCreateWithImageInRect([largeImage CGImage], cropRect);
[UIImageView setImage:[UIImage imageWithCGImage:imageRef]];
CGImageRelease(imageRef);

答案 4 :(得分: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的视口,但我希望这并不重要。它上面有一个面具,所以看起来并不奇怪。用户并没有完全了解它是如何完成的。

答案 5 :(得分:0)

你可以通过以下方式完成同样的事情:

UIImageView *imgVw=[[UIImageView alloc]initwithFrame:CGRectMake(x,y,height,width)];     
imgVw.image=[UIImage imageNamed:@""];
[self.view addSubView imgVw];
imgVw.contentMode = UIViewContentModeScaleToFill;

答案 6 :(得分: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)
                                     ])

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