我的UIImageView
显示一张较大的图片。它看起来是居中的,但我想把这个图片移动到UIImageView
内部。我查看了苹果公司的MoveMe示例,但是我无法弄清楚他们是如何做到的。似乎他们甚至没有一个UIImageView。有什么想法吗?
我的UIImageView
显示一张较大的图片。它看起来是居中的,但我想把这个图片移动到UIImageView
内部。我查看了苹果公司的MoveMe示例,但是我无法弄清楚他们是如何做到的。似乎他们甚至没有一个UIImageView。有什么想法吗?
imageView.layer.contentsRect = CGRectMake(0.0, 0.0, 0.3, 0.3);
"contentsRect"的描述: 矩形在单位坐标空间中定义了应使用的图层内容的部分。
原始答案已被iOS4中的CoreAnimation所取代。
正如Gold Thumb所说:您可以通过访问UIView的CALayer来实现此操作。具体来说,是它的contentRect属性:
根据苹果文档:该矩形在单位坐标空间中定义了应使用的图层内容的部分。可动画化。
yourImageView.contentMode = UIViewContentModeScaleToFill;
如果您希望在UIImageView中原样显示大图像,最好且最简单的方法是将图像视图放置在UIScrollView内。这样您就可以缩放和移动图像。
希望能对您有所帮助。
这里有一个简短的例子:
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(常量)处。负值意味着相反的方向。