2017-03-20 5 views
-2

私のテーブルビューのセクションにフッターがあります。 私は、ボタンをセンターに配置した後、ボタンを中央に配置しようとしました。 私はどのように私のボタンを中央に配置することができませんでした、私はview.centerを使用しようとするか、彼にすべての親ビューの幅を与え、使用後はテキストを中心に合わせます。 (個人的に私は第二の方法を使用することを好む。) 実は私のコードはこの1つテーブルビューセクションのフッターのボタンSwift3

override func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? { 
    let footerView = UIView() 
    let labelMore = UIButton() 
    footerView.addSubview(labelMore) 
    labelMore.sizeToFit() 
    labelMore.setTitle(footerText(status: "Test"), for: .normal) 
    labelMore.backgroundColor = #colorLiteral(red: 0.3411764801, green: 0.6235294342, blue: 0.1686274558, alpha: 1) 
    footerView.backgroundColor = #colorLiteral(red: 0.2392156869, green: 0.6745098233, blue: 0.9686274529, alpha: 1) 
    //labelMore.addTarget(self, action:#selector(footerMore(sender:)), for: .touchUpInside) 

    return footerView 
} 

であると私は、緑の四角が実際に私のボタンでしまった、私は私のコードlabelMore.frame = footerView.frameから消去し、ので、それはうまくいきません。The green square is my button

編集:私の質問が明確でない場合は、私のボタンを中央にしたいです。

+1

質問は何ですか? – matt

+0

ボタンを 'footerView'の中心に置くために何をしようとしていますか? –

+0

私は自分のボタンをしたい、青いスペース(footerView)をすべて取った後、あなたのノートに感謝、私は私の質問を編集します –

答えて

1

あなたが表示したコードのどれもボタンを「中央に」表示していないので、中央にないことは驚くことではありません。 frame.originlabelMoreに設定されていないため、原点はゼロです(画面左に表示されているとおり)。

私ははい、よくそれが仕事に行くことはなかった私のコードからlabelMore.frame = footerView.frame

を消去します。それは、frameboundsを混乱させる別のケースです。サブビューのframeは、スーパービューのboundsで表示されます。あなたはそれを任意のサイズを与えられていない - だから、footerViewはとどまるところを持っていないので、しかし、それはどちらかの仕事に行くのではありません

labelMore.frame = footerView.bounds 

にそのコードを変更します!

解決策は、自動レイアウトを使用してlabelMoreを配置することです。そうすれば、footerViewのサイズがどのようになっても、labelMoreは正しい位置になります。例えば、あなたがlabelMorefooterViewと同じサイズにしたいと仮定しましょう:

let footerView = UIView() 
    let labelMore = UIButton() 
    footerView.addSubview(labelMore) 
    labelMore.topAnchor.constraint(equalTo: footerView.topAnchor).isActive = true 
    labelMore.bottomAnchor.constraint(equalTo: footerView.bottomAnchor).isActive = true 
    labelMore.leadingAnchor.constraint(equalTo: footerView.leadingAnchor).isActive = true 
    labelMore.trailingAnchor.constraint(equalTo: footerView.trailingAnchor).isActive = true 
    labelMore.translatesAutoresizingMaskIntoConstraints = false 
    // ... and remove the `sizeToFit` ... 
+0

実際に私はあなたのコードを試し、あなたのビューでいくつかの色を与えるフッターを表示し、ボタンの青をクリックします。 実際には、青色の背景ボタンがない赤い背景だけが表示されます。 –

+0

申し訳ありませんが、私はコード行を削除しました。それを追加しました(編集された答えを見てください)。 – matt

+0

彼は完璧に動作します、フレームと境界についての説明のおかげで –

関連する問題