2017-08-29 69 views
1

我已經在故事板中添加了具有默認圖像的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

回答

1

您應該禁用預生成約束。最簡單的方法是在動畫視圖中使用自動調整遮罩而不是約束。

mainImageView.translatesAutoresizingMaskIntoConstraints = true 

你可以把這個代碼添加到您-viewDidLoad方法或略高於mainImageView.sd_setImage(with:...

最後但並非最不重要的,你需要調用塊內layoutIfNeeded。

self.view.layoutIfNeeded() 
0

看起來您正在使用自動佈局來設置圖片視圖的大小,這可以解釋爲什麼手動設置框架沒有做任何事情。您需要修改決定圖像視圖大小的約束,然後致電mainImageView.layoutIfNeeded()