制約を使用してボタンをUITableViewCellの半分の幅にする方法(ストーリーボードまたはプログラムによる)

うのめ

私が取り組んでいるプロジェクトには、UITableViewCellの幅のちょうど半分を占めるデータを含む2つのボタンが必要です。

以前、これを実行したかったときは、通常、ボタンがそのスーパービューと同じ幅になり、乗数が0.5になるという制約を設定しました。

ただし、何らかの理由でUITableViewCell内で、ストーリーボードにこのオプションを提供させることができません。GUIの「EqualWidths」制約はグレー表示されています。

私が達成しようとしていることの例

プログラムで実行することを決心したので、カスタムセルで次のコードを結びました。cellInit()以下メソッドをawakeFromNibで呼び出そうとしましたが、エラーが発生しました。cellForRowAtIndexPathセルがロードされたときにそれを呼び出すだけでも試しましたが、同じエラーが発生しました。

UIKitをインポートする

クラスPollCell:UITableViewCell {

@IBOutlet weak var option1: UIButton!
@IBOutlet weak var option2: UIButton!

override func awakeFromNib() {
    super.awakeFromNib()

    //cellInit() //Commented out because causes error
}

func cellInit(){
    option1.addConstraint(NSLayoutConstraint(item: option1, attribute: .Width, relatedBy: .Equal, toItem: self, attribute: .Width, multiplier: 0.5, constant: 0))
}

}

これは私が得ているエラーです:

'NSInternalInconsistencyException'、理由: '制約の準備ができていないビュー階層でレイアウトを設定できません。

私が達成しようとしていることはかなり標準的なことなので、これはクレイジーなことではないと思います。おそらく間違った方法で何かをしているのでしょう。いずれにせよ、私のような多くの新参者がこれに遭遇すると思います。前もって感謝します!

ericgu

コメントでは、あなたが活用することを議論しました contentView.frame.maxX

または、AutoLayoutを使用することもできます。 setTranslatesAutoresizingMaskIntoConstraints(false)

タグを割り当てます(オプション)。ボタンは2つしかありませんが、2つ以上の場合はタグを使用するUIButtonため、ボタンごとに手動で入力する必要はありません

addConstraint(NSLayoutConstraint(item: self.viewWithTag(1) as UIButton, attribute: .Right, relatedBy: .Equal, toItem: self, attribute: .CenterX, multiplier: 0.33, constant: 0))
addConstraint(NSLayoutConstraint(item: self.viewWithTag(2) as UIButton, attribute: .Right, relatedBy: .Equal, toItem: self, attribute: .CenterX, multiplier: 0.66, constant: 0))

または辞書を使用したVFL:

for button in buttonsDictionary.keys {
          self.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-[\(button1)]-[\(button2)]|", options: .allZeros, metrics: nil, views: buttonsDictionary))
        }

cell.updateConstraints()TableViewでcellForRowAtIndexPathを呼び出します。

以下のリンクで詳細を確認できます。2つのボタンを並べた例があります。

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/AutoLayoutinCode/AutoLayoutinCode.html#//apple_ref/doc/uid/TP40010853-CH11-SW1

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ