2017-08-29 16 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のすぐ上に置くことができます(with:... – Baig

答えて

1

事前生成された制約を無効にする必要があります。最も簡単な方法は、アニメーション表示に制約の代わりに自動サイズ変更マスクを使用することです。

mainImageView.translatesAutoresizingMaskIntoConstraints = true 

あなたはブロック内layoutIfNeededを呼び出す必要があります少なくとも、あなたの-viewDidLoadメソッドにこのコードを置くか、単にmainImageView.sd_setImage(with:...

そして最後に上記のことはできませんが。

self.view.layoutIfNeeded() 
0

イメージビューのサイズを変更するためにautolayoutを使用しているようですが、手動でフレームを設定しても何もしない理由がわかります。イメージビューのサイズを決定する制約を変更し、mainImageView.layoutIfNeeded()を呼び出す必要があります。

関連する問題