2017-12-04 18 views
0

contentView全体を占めるラベルが付いたセルが必要です。私はペン先でこれを何度もやったことがあるが、今回はペン先の作成を避けることに決めた。以下は私のコードです。SwiftでカスタムUITableViewCellをプログラムで作成する

class StackLegendCell: UITableViewCell { 

    var title = UILabel() 

    override init(style: UITableViewCellStyle, reuseIdentifier: String?) { 
    super.init(style: style, reuseIdentifier: reuseIdentifier) 

    contentView.addSubview(title) 

    title.numberOfLines = 1 
    title.textAlignment = .center 
    title.setContentCompressionResistancePriority(1000, for: .horizontal) 
    title.setContentHuggingPriority(1000, for: .horizontal) 
    title.text = "??" 
    //contentView.translatesAutoresizingMaskIntoConstraints = false 

    title.widthAnchor.constraint(equalTo: contentView.widthAnchor, multiplier: 1.0).isActive = true 
    title.heightAnchor.constraint(equalTo: contentView.heightAnchor, multiplier: 1.0).isActive = true 
    } 

ラベルに何も表示されないという問題があります。ビューデバッガのチェックではwidth = height = 0と表示されていますが、contentViewと同じサイズにする必要がある高さと幅のアンカーを設定しています。

私には何が欠けていますか?

ありがとうございました。

+0

このメソッドの最後の位置に 'contentView.addSubview(title)'を追加してみてください。 –

+0

それは動作しません。実際には、制約を設定するときに既存の関係がなければならないため、クラッシュが発生します。 – Phantom59

答えて

0

最後に、解決策が見つかりました。あなたは、このコード行を追加し、構築titleLabel

title.frame = contentView.frame

の枠を設定逃しました。これはうまくいくはずです。

+0

申し訳ありませんが、どちらもうまくいくとは思いません。基本的にフレームサイズをハードコードしていませんか?フレームがハードコーディングされている場合、私の制約はどのように有効になりますか? – Phantom59

+0

私はあなたのコードですでにテスト済みで、うまくいきます。まず、テーブルビューのセルにタイトルを表示し、次に制約について考える必要があります。 –

+0

私はcontentViewからラベルのフレームを割り当てた後に結果をダブルチェックして、実際には動作しません。この特定のテーブル(&セル)は、右マージンに対して40ポイント配置されています。私はビューのデバッガでラベルを調べ、40ポイント(これは私が見たいと思っていたもの)よりもはるかに大きい幅を示しています。幅は320ポイントです。高さは問題ありません。実際には、ラベルはテキストアラインメントが.leftの場合のみ表示されます。それは中央と右の画面外ですので、私たちは(または少なくとも私は)何かを欠いている... – Phantom59

関連する問題