通过更改框架来调整UIImageView的大小

问题描述:

我已经在故事板中添加了具有默认图像的UIImageView。在代码中,我在运行时更新图像并调整框架。通过更改框架来调整UIImageView的大小

mainImageView.sd_setImage(with: NSURL(string: urlString) as URL?, completed: { 
     (image, error, cacheType, url) in 
     self.setPoints() 
    }) 

public func setPoints() { 
    mainImageView.frame = CGRect(x:x, y:0, width:(mainImageView.image?.size.width)!/1.7, height:(mainImageView.image?.size.height)!/1.7) 
    mainImageView.contentMode = .scaleAspectFill 
    mainImageView.setNeedsDisplay() 
    mainImageView.reloadInputViews() 
    mainImageView.updateConstraintsIfNeeded() 
} 

我读了堆栈溢出的各种帖子,并尝试使用上述方法调整imageivew的大小,但没有运气。有没有其他方式来调整图像视图的大小?

+0

mainImageView通过自动布局添加?如果是,那么你应该采取高度和宽度约束和管理它。 – Govaadiyo

+0

mainImageView.translatesAutoresizingMaskIntoConstraints = YES; 你可以把这段代码放到你的-viewDidLoad方法中或者在mainImageView.sd_setImage之上(使用:... – Baig

您应该禁用预生成约束。最简单的方法是在动画视图中使用自动调整遮罩而不是约束。

mainImageView.translatesAutoresizingMaskIntoConstraints = true 

你可以把这个代码添加到您-viewDidLoad方法或略高于mainImageView.sd_setImage(with:...

最后但并非最不重要的,你需要调用块内layoutIfNeeded。

self.view.layoutIfNeeded() 

看起来您正在使用自动布局来设置图片视图的大小,这可以解释为什么手动设置框架没有做任何事情。您需要修改决定图像视图大小的约束,然后致电mainImageView.layoutIfNeeded()