Swift trailingAnchorが効かない
下記コードにおいて、trailingAnchor
が全く効きません。
最低限のテストとして、ボタンを一つにして横方向の制約leadingAnchor
とtrailingAnchor
の二つを設定しても、さらにはtrailingAnchor
だけを設定しても、trailingAnchor
の右端との関係は無視され、ボタンは左寄りにしか表示されません。
trailingAnchor
が効いていないためと思いますが、画面を回転させても横幅は変わりませんが、縦方向はオートレイアウトが効き縦幅は制約通り変化します。
間違っている点があればご指摘いただけないでしょうか。
また、改善策をご教授いただければ幸いです。
テスト環境
・Xcode8.3.2
・iOS10.3.3(iPadMini4実機)
@IBOutlet var buttons:[UIButton] = []
...中略...
//ボタンの表示
func buttonIndicate(){
for roop in 0...11 {
//ボタンの横位置を決める
let button:UIButton = UIButton()
//表示されるテキスト
button.setTitle(String(roop), for: .normal)
//テキストの色
button.setTitleColor(UIColor.black, for: .normal)
//バックグラウンドカラー
button.backgroundColor = UIColor.green
//タグ番号
button.tag = roop
button.restorationIdentifier = String(roop)
//このあと追加する制約とコンフリクトさせないため
button.translatesAutoresizingMaskIntoConstraints = false
buttons.append(button)
}
let keyColum = 11
//viewに追加して制約を設定
for roop in 0...11{
self.view.addSubview(buttons[roop])
//X方向の制約
if roop == 0 {
//最初のボタンと左端の関係
self.buttons[roop].leadingAnchor.constraint(equalTo: self.view.leadingAnchor, constant: 1).isActive = true
} else {
//前のボタンとの関係
self.buttons[roop].leadingAnchor.constraint(equalTo: self.buttons[roop - 1].trailingAnchor, constant: 2).isActive = true
}
//幅の制約 前のボタンと同じ幅
if roop != 0{
self.buttons[roop].widthAnchor.constraint(equalTo: self.buttons[roop - 1].widthAnchor).isActive = true
}
//一番右のボタンと右端の関係 ここが全く効いていない
if roop == keyColum{
self.buttons[roop].trailingAnchor.constraint(equalTo: self.view.trailingAnchor, constant: -1)
}
//Y方向の制約
//topとの関係
self.buttons[roop].topAnchor.constraint(equalTo: self.view.topAnchor, constant: 0).isActive = true
//bottumとの関係
self.buttons[roop].bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -10).isActive = true
}
}