我想要一个固定宽度但高度可变的imageview。如果我从网站获得的图像比故事板中的图像视图更高,我想刷新视图,
当我使用“缩放到填充”时,这是视图。
postimg.org/image/6l1ol2pvz
这是我使用“Aspect Fill”
的时候postimg.org/image/9duw53q8f /
我希望图像与“Aspect Fill”相似,但我无法正确放置底部。
谢谢大家!
解决方案:
我给出了我的图像宽度和高度限制。然后我以编程方式更改了它。这是我想要的观点,我让它成功了!
http://i.stack.imgur.com/PCgHw.png
let imageData = NSData(contentsOfURL: imgUrl)
let myImage = UIImage(data: imageData!)
let aspectRatio = (myImage?.size.height)! / (myImage?.size.width)!
self.postCombineImageViewHeight.constant = UIScreen.mainScreen().bounds.size.width * aspectRatio
self.postCombineImageViewWidth.constant = UIScreen.mainScreen().bounds.size.width
谢谢大家的帮助!
答案 0 :(得分:3)
您应该选择"剪辑子视图"在"属性检查器"在IB中的此图像视图(或以编程方式设置图像视图的clipToBounds
属性)。
例如,这是在方形图像视图中显示的风景图像,其内容模型为"方面填充",但是具有"剪辑子视图"未经检查(即将clipToBounds
设置为false
):
(我已添加红色CAShapeLayer
以显示frame
的{{1}}位置。)
这是相同的图片视图,但使用"剪辑子视图"已检查(即UIImageView
属性为clipToBounds
):
或者,你可以选择"方面适合"而不是"方面填充",在这种情况下整个图像将是可见的而不是扭曲的,但你最终可能会空白照片边缘的空间:
答案 1 :(得分:2)
您可以在storyboard中制作高度约束,然后在viewcontroller中拖放约束IBOutlet,并在从网站获取imageview时更改其常量
答案 2 :(得分:0)
你在使用故事板吗?和汽车布局?
试试这个:放置一个"垂直距离"照片底部与底部视图顶部之间的约束。
然后单击添加的约束,并在属性检查器上将关系更改为"大于或等于"。
这样,imageView高度将适应图像内容;但是如果图像的高度变得太大,它会在到达底部视图时停止生长。
答案 3 :(得分:0)
我的解决方案 -
1)为图像提供高度和宽度约束。
2)导入AVFoundation套件。
3)通过以下代码为您的图像生成一个新的矩形(通过纵横比拟合) -
let boundingRect = CGRect(x: 0, y: 0, width: width, height: CGFloat(MAXFLOAT))//width is your fixed width for your image eg. - if your image covers width of your superview. It can be - self.view.frame.width
let rect = AVMakeRectWithAspectRatioInsideRect(photo.image.size, boundingRect)
所以现在你得到了你的直觉 -
现在你可以通过这样的方式改变你的身高限制 -
imageHeightConstraint.constant = rect.size.height
答案 4 :(得分:0)
您可以使用NSLayoutConstraint
self.addConstraint(NSLayoutConstraint(
item: myButton,
attribute: .Width,
relatedBy: .Equal,
toItem: nil,
attribute: .NotAnAttribute,
multiplier: 1.0,
constant: 200))
对于高度,您可以添加变量高度