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

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

ただいまの
回答率

91.99%

  • Swift

    3733questions

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

  • TableView

    26questions

    TableView(UITableView)とは、リスト形式で表示するコントロールで、ほとんどのアプリに使用されています。画面を「行」に分けて管理し、一般的には各行をタップした際に詳細画面に移動します。

TableVIewで画像のサイズを変えて表示する

解決済

回答 2

投稿 2017/03/20 10:01

  • 評価
  • クリップ 0
  • VIEW 119

madao

score 15

TableViewのCellに画面の横幅いっぱいでCellのした50くらいを残して表示させたいです。
何をやっても、Cellの高さいっぱいに表示されてどうにもなりません。教えて下さい。

class ViewController: UIViewController ,UITableViewDelegate,UITableViewDataSource{


    let menus : [String] = ["ご飯1","ご飯2","ご飯3","ご飯4","ご飯5","タご飯6","ご飯7","ご飯8","ご飯9"]

    let keys : [String] = ["あ","い","う","え","お","か","き","く","け","こ","さ","し"]

    let menuImages = ["pizza.JPG","guril.JPG","asupara.JPG","","","","","","","",""]

    var testImages:[UIImage] = []


    // ステータスバーの高さ
    let statusBarHeight = UIApplication.shared.statusBarFrame.height

    override func viewDidLoad() {
        super.viewDidLoad()

        // UITableView を作成
        let tableView = UITableView()


        // サイズと位置調整
        tableView.frame = CGRect(
            x: 0,
            y: statusBarHeight ,
            width: self.view.frame.width,
            height: self.view.frame.height - statusBarHeight
        )

        // Delegate設定
        tableView.delegate = self


        // DataSource設定
        tableView.dataSource = self

        // 画面に UITableView を追加
        self.view.addSubview(tableView)

        //for menuImage in menuImages {
        //    testImages.append(UIImage(named: menuImage)!)
        //}

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    // MARK: - UITableViewDataSource

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        // セルを作る

        let cell = UITableViewCell(style: .subtitle, reuseIdentifier: "cell")
        cell.textLabel?.text = menus[indexPath.row]
        cell.detailTextLabel?.text = keys[indexPath.row]
        cell.detailTextLabel?.textColor = UIColor.gray
        cell.imageView?.image = UIImage(named: menuImages[indexPath.row])
        _ = cell.imageView?.image?.resize(size: CGSize(width: 100, height: 200))


        return cell
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // セルの数を設定
        return menus.count
    }



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

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

    クリップした質問はマイページの「クリップ」タブからいつでも見ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • fuzzball

    2017/03/21 11:20

    セルの高さは設定していないのでしょうか?デフォルトのセルの高さは44なので、何も設定していないのであれば、そもそも下に50あけることは出来ません。

    キャンセル

  • madao

    2017/03/21 13:53

    すいません。コピペし忘れです。。高さ 250にしてます

    キャンセル

回答 2

checkベストアンサー

0

UITableViewCell標準のUIImageView(imageViewプロパティ)はサイズ変更出来ませんので、自分でUIImageViewを作ってcell.contentViewにaddSubviewして下さい。

let iv = UIImageView(frame: CGRect(x: 15, y: 0, width: 100, height: 200))
iv.image = UIImage(named: menuImages[indexPath.row])
cell.contentView.addSubview(iv)

こんな感じで。(動作未確認)

投稿 2017/03/21 15:15

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    以下のような回答は評価を下げられます

    • 間違っている回答
    • 質問の回答になっていない投稿
    • 不快な投稿

    評価を下げる際はその理由をコメントに書き込んでください。

  • 2017/03/22 16:22

    承知いたしました。
    ありがとうございます!

    キャンセル

0

_ = cell.imageView?.image?.resize(size: CGSize(width: 100, height: 200))

ではなくて、

cell.imageView.frame.size = CGsize(width: 100, height: 200)


はダメですか?
あとカスタムセルクラスのコードを載せて欲しいですね。

投稿 2017/03/21 03:24

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    以下のような回答は評価を下げられます

    • 間違っている回答
    • 質問の回答になっていない投稿
    • 不快な投稿

    評価を下げる際はその理由をコメントに書き込んでください。

  • 2017/03/21 05:05

    はい、その辺のサイズ変更は全て試みましたが、変わりませんでした。

    カスタムセルクラスが必要なんですか?
    自分初心者なんでどういう風に記述すればいいのかわからないのですがご教授いただけませんか?

    キャンセル

  • 2017/03/22 00:08

    fuzzballさんが書いてあるやり方でできると思います!

    自分がimageViewなどが、標準のUITableViewCellのクラスにあると知らず、自作のCellのクラスが用意されているものだと勘違いしました。笑
    すいません。

    キャンセル

  • 2017/03/22 16:20

    色々ありがとうございました!!

    キャンセル

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

ただいまの回答率

91.99%

関連した質問

同じタグがついた質問を見る

  • Swift

    3733questions

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

  • TableView

    26questions

    TableView(UITableView)とは、リスト形式で表示するコントロールで、ほとんどのアプリに使用されています。画面を「行」に分けて管理し、一般的には各行をタップした際に詳細画面に移動します。

閲覧数の多いSwiftの質問