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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Xcode 7

Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

Swift

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

Q&A

解決済

1回答

10628閲覧

UITableViewCellの横幅をコードで可変にしたい。

TsksHsgw

総合スコア23

Xcode 7

Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

Swift

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

0グッド

0クリップ

投稿2016/08/29 07:30

###前提・実現したいこと
質問をご覧いただきまして、ありがとうございます。

現在、TableViewをコードで画面サイズに合わせてサイズを変えて表示しているのですが、

イメージ説明

画面のサイズが変わっても、cellのwidthは変わらず320.0のままになってしまいます。

イメージ説明swift

こちらの投稿を参照し、CustomCellを使えば実装可能かと思い、
試してみたのですが、

イメージ説明
上のスクリーンショットのように、背景は画面いっぱいに伸びたのですが、accessoryが以前の位置にそのまま配置されてしまいます。

これを改善する方法がありましたら、ご教授いただきたく存じます。
よろしくお願いいたします。

下にソースコードを記載いたします。

ViewController.swift

//tableViewの横幅はview.frame.widthで画面サイズに合わせています。 //================================== tableViewWidth = self.view.frame.width //================================== //tableView dataの表示 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)->UITableViewCell { let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "Cell") let object = array[indexPath.row] cell.textLabel?.text = titleArr[indexPath.row] cell.detailTextLabel?.text = dateArr[indexPath.row] cell.accessoryType = UITableViewCellAccessoryType.DetailDisclosureButton print("cell width is \(cell.frame.size.width)") print("tableView width is \(tableViewWidth)") return cell }

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

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

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

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

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

fuzzball

2016/08/29 08:17

printの出力結果を教えて下さい。ついでに、print("table width is \(tableView.frame.size.width)")も追加して下さい。
TsksHsgw

2016/08/29 09:27 編集

cell.frame.size.width 【5, 5s → 320.0】 【6, 6s → 375.0】 となっています。 tableView.frame.widthも同様です。
guest

回答1

0

ベストアンサー

画面のサイズを設定する場所を以下のところに書くと反映されると思います。

swift

1override func viewDidLayoutSubviews() { 2 super.viewDidLayoutSubviews() 3 4 let screenRect = UIScreen.mainScreen().bounds 5 tableView.frame = CGRect(x: 0, y: 0, width: screenRect.width, height: screenRect.height) 6}

投稿2016/08/29 10:55

_Kentarou

総合スコア8490

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

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

TsksHsgw

2016/08/29 11:05

fuzzball様、_Kentarou様 ありがとうございます。_Kentarou様にご教授いただいた内容でしっかり表示が変わりました。ただ、改善する前から viewDidLayoutSubviewを使っていたので原因がわからないのですが、原因に関しては自分で考えてみます。 本当にありがとうございました。助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問