質問編集履歴

1 分かりにくい文章だったので編集しました

apple_japan

apple_japan score 55

2017/01/09 11:41  投稿

estimatedHeightForRowを設定するとCellの高さが変わってしまう
tableViewの1つのCellに高さ可変のtextViewを設置しました。
それは問題なく動作しているのですが、全てのCellの高さが勝手に変わってしまいました。
Storyboard上ではCellの高さをデフォルトの44にしているのですが、それよりも2、3pxほど高くなってしまっているようです。
高さ可変のtextViewを機能させつつ、Cellの高さを44のままにしたいのですが、どのようにしたらよいでしょうか。
高さ可変のtextViewを機能させつつ、最初に読み込んだ時のCellの高さを44にしたいのですが、どのようにしたらよいでしょうか。
下記コードを削除するとセルの高さは戻りますが、textViewが可変ではなくなってしまいます。returnに44と入れてみても何も変わりませんでした。
```.swift
override func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
       return UITableViewAutomaticDimension
}
```
以下全コードです。
```.swift
import UIKit
class TableViewController: UITableViewController, UITextViewDelegate {
   
   @IBOutlet weak var textView: UITextView!
   
   override func viewDidLoad() {
       super.viewDidLoad()
       textView.delegate = self
   }
   override func didReceiveMemoryWarning() {
       super.didReceiveMemoryWarning()
   }
   override func numberOfSections(in tableView: UITableView) -> Int {
       return 1
   }
   override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
       return 13
   }
   
   func textViewDidChange(_ textView: UITextView) {       
       UIView.setAnimationsEnabled(false)
       tableView.beginUpdates()
       tableView.endUpdates()
   }
   
   override func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
       return UITableViewAutomaticDimension
   }
   
   override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
       return UITableViewAutomaticDimension
       
   }
}
```
よろしくお願いいたします!
  • iOS

    5180 questions

    iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

  • Swift

    9909 questions

    Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る