0
A
答えて
0
:私は何を達成したいことは、それはそれは私がこのようにそれを持っているdynamically.Currently含まれた画像に応じたImageViewのサイズを変更する必要があります。
最初に、画像コンテンツモードをAspect Fit BUTに設定するだけで十分ではありません。
新しい画像を読み込むたびに、imageViewのアスペクト比の制約を変更する必要があります。基本的に、何をする必要がある:
- あなたのイメージの幅と高さ
- 計算アスペクト比
let aspectRatio = Float(image.height)/Float(image.width)
- があなたのイメージ図のための新たなアスペクト比の制約を作成するために、そのアスペクト比を使用して取得します。
これは私がこの問題を管理していたコードのコピー貼り付けです(コメントが追加されています)。それがあなたを助けることを願っています。
// aspectRatioCnst is IBOutlet reference to aspect ratio constraint I've set on mainImageView in Storyboard
if let aspectRatioCnst = aspectRatioCnst {
aspectRatioCnst.isActive = false
}
let aspectRatio = Float(imagePost.height)/Float(imagePost.width)
aspectRatioCnst = NSLayoutConstraint(
item: self.mainImageView,
attribute: NSLayoutAttribute.height,
relatedBy: NSLayoutRelation.equal,
toItem: self.mainImageView,
attribute: NSLayoutAttribute.width,
multiplier: CGFloat(aspectRatio),
constant: 0)
if let aspectRatioCnst = aspectRatioCnst {
self.mainImageView.addConstraint(aspectRatioCnst)
aspectRatioCnst.isActive = true
self.mainImageView.layoutIfNeeded()
}
if let image = imagePost.loadedImage {
self.mainImageView.image = image
} else if let imageURL = URL(string: imagePost.fileURL) {
DispatchQueue.global(qos: .background).async {
// UIImage extension with downloadedFromURL method
UIImage.downloadedFromURL(url: imageURL, withCallback: { (image) -> (Void) in
DispatchQueue.main.async {
self.imageLoadingActivityIndicator.stopAnimating()
self.mainImageView.image = image
self.imagePost?.loadedImage = image
}
})
}
}
0
まず、あなたのコードでこれを行うその後
、あなたのイメージは次のように制約を設定すると
、あなたの下のコンテンツこのような高さを設定
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
let imageNew = UIImage(named: "test") //Set your image here
let oldWidth = imageNew!.size.width
let scaleFactor = tableView.frame.size.width/oldWidth
let newHeight = imageNew!.size.height * scaleFactor
let newWidth = oldWidth * scaleFactor
//Finally to get cell size just add the bottom part height for othercontents to ImageHeight here
let CellSize = CGSize(width: newWidth, height: (newHeight + 40))
return CellSize.height
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! TableViewCell
cell.NewImage.image = UIImage(named: "test")
return cell
}
関連する問題
- 1. Swift 3 "didFinishPickingMediaWithInfo"テーブルビューのセル内の画像
- 2. テーブルビューのセルに画像を表示
- 3. iOS 5ストーリーボード - ビューコントローラ内のテーブルビュー
- 4. セル内の画像ビューの制約をプログラムで変更する
- 5. テーブルビューのセル内のビューの色を変更できません
- 6. テーブルビュー内の画像を伸ばす
- 7. コレクションビューのセル内のテーブルビュー
- 8. 'リセット'テーブルビューのセルの内容
- 9. テーブルビューのセル内のボタン
- 10. テーブルビューのセルからの特定の画像のピークとポップ
- 11. テーブルビューのセルの1つの画像またはサムネイル
- 12. android:button内の画像ビュー
- 13. フッタのコンテンツにマッチするテーブルビューのセルのストーリーボードの制約
- 14. 複数のショーsegueからのテーブルビューのセルのストーリーボード
- 15. AlamofireImageでテーブルビューのセル画像を表示する際の問題
- 16. テーブルビューのセルからビューをプッシュ
- 17. iOSストーリーボード:画像ビューの親ビューとして画像ビューを指定できません。
- 18. 画像ビューをテーブルビューの次の行に追加する
- 19. 画像を非同期的にテーブルビューのセルにロードする
- 20. テーブルビューのセルで動的に画像サイズを設定する
- 21. 画像がテーブルビューのセルに重なって表示される
- 22. テーブルビューの異なるセルに画像を渡す
- 23. テーブルビュー(スウィフト)のセル内の複数のラベル
- 24. 画像ビューの画像ビューxcode
- 25. ストーリーボードの位置付けテキストボタンの内側の画像
- 26. Popview Segueを作成してテーブルビューのセル内のビューをクリックする
- 27. テーブルビュー内のセルにシャドウを表示
- 28. セル内の画像ビューをタップすることからセグを作る
- 29. PickerViewテーブルビューのセル
- 30. UITableViewセルの画像
は何の画像が非同期にダウンロードしている場合、このような気にいらを取得する必要があります。それでは、コードがイメージの高さと幅をどのように知るのですか? –
それは良い点です。私もその部分をコピーする必要はないと思ったが、あなたが尋ねたので、私は自分の答えを更新した。 P.S.画像URLをポイントしているレスポンスJSONでは、画像の高さと幅が取得されるため、計算する必要はありません。 – JPetric
基本的には、最初に、すべての画像の高さと幅、および画像をダウンロードできるURLがあるすべての画像メタデータをダウンロードします。そして、私がテーブルビューのセルをデキューすると、私はただ非同期にイメージをダウンロードします。私はそれを少し明確にしたいと思っています。 – JPetric