チュートリアルのheightAnchor.constraintとwidthAnchor.constraintについて
swift公式のチュートリアルを進めていますが、一向に解決できない部分があるので質問させていただきます。
以下のURLに書かれているように、UIButtonを作るチュートリアルです。
Start Developing iOS Apps (Swift): Implement a Custom Control
以下が私の書いているソースコードですが、Runすると通常赤い正方形のボタンが表示されるところが、長方形のボタンになってしまいます。
import UIKit
class RatingControl: UIStackView {
//MARK: -Initialization
override init(frame: CGRect){
//プログラムでviewを初期化
//frameがinitializer、スーパークラスの初期化子
super.init(frame: frame)
setupButtons()
}
required init(coder: NSCoder){
//storyboardでviewをロードできるようにする
//coderがinitializer、スーパークラスの初期化子
super.init(coder: coder)
setupButtons()
}
//MARK: -Private Methods
private func setupButtons() {
let button = UIButton()
button.backgroundColor = UIColor.red
//ボタンの色
button.translatesAutoresizingMaskIntoConstraints = false
//厳密には必要ないが、Auto Layoutを使う時は自動生成された制約を無効にしておくほうが良い
//stackviewにviewを追加すると自動的にfalseになっている
button.heightAnchor.constraint(equalToConstant: 44).isActive = true
button.widthAnchor.constraint(equalToConstant: 44).isActive = true
//ボタンの高さと幅の制約を決める
addArrangedSubview(button)
//ボタンを表示させる
}
}
UIStackViewのサブクラス(Rating Control)を作成し、storyboardの方でhorizontal Stack Viewと接続しています。
おそらく
button.translatesAutoresizingMaskIntoConstraints = false
button.heightAnchor.constraint(equalToConstant: 44.0).isActive = true
button.widthAnchor.constraint(equalToConstant: 44.0).isActive = true
の部分に問題があると考えていますが、どうなのでしょうか…。
他サイトでほとんど同じような質問がされていても回答がなかったり、海外サイトでの質問と回答も試しましたがダメでした。