我有一个UIImageView
显示更大图像的。它似乎居中,但我想将该图像移到UIImageView
. 我查看了来自 Apple 的MoveMe示例,但我无法弄清楚他们是如何做到的。似乎他们甚至没有 UIImageView 。有任何想法吗?
7 回答
您需要的是类似的东西(例如显示原始图像左上角的 30% x 30%):
imageView.layer.contentsRect = CGRectMake(0.0, 0.0, 0.3, 0.3);
“contentsRect”的描述:单位坐标空间中的矩形,它定义了应该使用的图层内容部分。
原始答案已被 iOS4 中的 CoreAnimation 取代。
所以正如 Gold Thumb 所说:你可以通过访问 UIView 的 CALayer 来做到这一点。特别是它的contentRect:
来自Apple Docs:单位坐标空间中的矩形,它定义了应该使用的图层内容部分。动画。
您想显示图像以使其包含在 UIImageView 中吗?在这种情况下,只需将 UIImageView 的 contectMode 更改为 UIViewContentModeScaleToFill (如果纵横比无关紧要)或 UIViewContentModeScaleAspectFit (如果您想保持纵横比)
在 IB 中,这可以通过在 Inspector 中设置 Mode 来完成。
在代码中,它可以完成为
yourImageView.contentMode = UIViewContentModeScaleToFill;
如果您想在 UIImageView 中显示大图像,最好和最简单的方法是将图像视图放在 UIScrollView 中。这样您就可以放大和缩小图像并四处移动。
希望有帮助。
听起来 MoveMe 示例并没有像您想要的那样做任何事情。其中的 PlacardView 与使用的图像大小相同。对其进行的唯一大小更改是视图变换,它不会影响图像的视口。据我了解,您有一张大图片,并希望在其中显示一个小视口。没有一个简单的类方法可以做到这一点,但有一个函数可以用来获得所需的结果:CGImageCreateWithImageInRect(CGImageRef, CGRect) 会帮助你。
这是一个使用它的简短示例:
CGImageRef imageRef = CGImageCreateWithImageInRect([largeImage CGImage], cropRect);
[UIImageView setImage:[UIImage imageWithCGImage:imageRef]];
CGImageRelease(imageRef);
非常感谢。我找到了一个非常简单的解决方案,如下所示:
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 的视口,但我希望这不会有太大影响。它上面有一个面具,所以它看起来并不奇怪。用户不知道它是如何完成的。
您可以通过以下方式完成相同的操作:
UIImageView *imgVw=[[UIImageView alloc]initwithFrame:CGRectMake(x,y,height,width)];
imgVw.image=[UIImage imageNamed:@""];
[self.view addSubView imgVw];
imgVw.contentMode = UIViewContentModeScaleToFill;
您可以使用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(常量)。负值表示相反的方向。