質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
iOS 8

iOS 8(アイ・オーエス8)は、アップル社が2014年9月に発表したオペレーティングシステムです。iPhone 4sより対応しています。デザイン性の変更はなく、アプリや各種機能が強化されています。また、サードパーティ開発者のために、多くのAPIが開放されています。

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

解決済

1回答

2932閲覧

tableView Cellの自動生成の高さが決まるタイミング

退会済みユーザー

退会済みユーザー

総合スコア0

iOS 8

iOS 8(アイ・オーエス8)は、アップル社が2014年9月に発表したオペレーティングシステムです。iPhone 4sより対応しています。デザイン性の変更はなく、アプリや各種機能が強化されています。また、サードパーティ開発者のために、多くのAPIが開放されています。

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

0クリップ

投稿2016/08/16 05:28

###発生している問題・エラーメッセージ
tableView.rowHeight = UITableViewAutomaticDimensionを使ってcellの高さは自動で可変するようにしているのですが、iOS8の場合ではcellの高さが正しく表示されません。
iOS9では正しい高さで生成されます。

スクロールしてcellが生成し直されると正しい高さで表示されます。
最初高さが決まるタイミングはいつなのでしょうか?

また、tableView複数のcellの中で、全体的には可変で、一ヶ所だけ高さを固定することは可能でしょうか?

わかる方がいらっしゃいましたら、お願いします。

###試したこと
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
}
の中でprintで出してみると正しい高さが取れるのですが、表示されると高さが正しい高さより高くなっています。

###補足情報(言語/FW/ツール等のバージョンなど)
swift シュミレーターiPhone5s(8.3)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

関係あるか分かりませんが、以下のプロパティは一緒に設定されていますか?

swift

1tableView.estimatedRowHeight = XX

サンプル

3つのセルを使用してそのうち一つは高さを16px固定、一度しか使わないを条件に簡単なサンプルを作ってみました、以下からダウンロードして試してみてください。

当然ながらこんなにセルの中の表示も簡単でないのは分かっているのですが、簡単な状態で高さがちゃんと変更されている事を確認できてから、複雑なものに置換えた方が良いと思います。

teratail_44462 Sample

投稿2016/08/16 06:02

編集2016/08/16 12:18
_Kentarou

総合スコア8490

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/08/16 06:10

viewDidLoad()の中に tableView.estimatedRowHeight = 20 //仮 と設定しています。
_Kentarou

2016/08/16 06:13

了解です。 あとコンソールログを含めAutlayout系のワーニングは表示されていませんか(実行時含む)?
退会済みユーザー

退会済みユーザー

2016/08/16 06:30

Autlayout系は出ていないと思います。 cellの中はLabel(1行)の高さなので16pxが正しいのですが、初め279.0pxで表示されていてしまいます。
_Kentarou

2016/08/16 06:33

テーブルの中で複数のセルをつかっていますか? どこかで279pxという高さのセルがありますか?
退会済みユーザー

退会済みユーザー

2016/08/16 06:47

tableの中には3つのcellがあり、高さがおかしいのは真ん中のcellのみです。 同じ高さのcellはありませんでした。
_Kentarou

2016/08/16 06:53

真ん中のcellは複数回登場しますか? 真ん中のcellのみ可変ではなく固定にしたいということですか?
退会済みユーザー

退会済みユーザー

2016/08/16 07:02

真ん中のcellは1度しか表示されません。 このcellのみ固定の高さにできればしたいです。
_Kentarou

2016/08/16 07:12

真ん中のCellの中にある部品はAutolayoutを掛けて高さを固定にしているという事ですか? storyboardにセルを配置している場合、真ん中のCellの高さ自体は16にしてありますか?
退会済みユーザー

退会済みユーザー

2016/08/16 07:31

現状は高さは中の要素によって決めたいので、固定の数字は入れていません。 storyboardにセルを配置しているのでCellの高さを16で固定にすると今度は上のCellの高さが崩れてしまいました。
_Kentarou

2016/08/16 07:37

> 現状は高さは中の要素によって決めたいので、固定の数字は入れていません。 これはCellの高さを16固定にしたいのと矛盾していますがいかがでしょう? > storyboardにセルを配置しているのでCellの高さを16で固定にすると今度は上のCellの高さが崩れてしまいました。 セル自体はそのセルが自動で高さ計算(Autolayout)しているのでしたら複数セルがあってもそのようなことにはならないと思いますが、どの様に作られているかを見ないと答えようがないですね。
退会済みユーザー

退会済みユーザー

2016/08/16 08:02

わかりにくい返答で申し訳ありません。 本来は中の要素によって高さを決めたかったのですが、iOS8で真ん中のCellの高さが正しく表示されないため、固定に変更した方が良いのではないかと思い、真ん中のCellの高さを固定に制約をかけたところ、他のCellの高さが変わってしまいました。
_Kentarou

2016/08/16 08:28

Autolayoutがしっかり設定できているのであれば、セルが複数あっても、固定なものが混じっていても表示には問題ないと思います。 後はコード、セルのAutolayoutの設定を見ない限りこちらではアドバイスできないと思います。
_Kentarou

2016/08/16 12:20

簡単ではありますが、3種類のセルを使い分け高さ可変のサンプルを作ってみました。 回答にリンクを貼りましたので、試してみてください。
退会済みユーザー

退会済みユーザー

2016/08/25 08:21

サンプルを作っていただきありがとうございました。 試してみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問