我有一个显示更大图像的UIImageView
。它似乎是居中的,但我想将该图像移到UIImageView
内。我查看了Apple的MoveMe样本,但我无法弄清楚他们是如何做到的。看起来他们甚至没有UIImageView。有什么想法吗?
答案 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(常量)。负值意味着相反的方向。