すべてのスタイル情報をクラスに追加し、UIButtonのサブクラスを作成してコードの重複を避けようとしています。現時点でSwift:ButtonクラスにCGSizeを適用しない
、私のクラスは次のようになりますのviewDidLoadで
class CustomButton: UIButton {
required init() {
super.init(frame: .zero)
// set other operations after super.init, if required
backgroundColor = .red
layer.cornerRadius = 5
layer.borderWidth = 1
layer.borderColor = UIColor.black.cgColor
frame.size = CGSize(width: 700, height: 100)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
私は追加してい:
let b1 = CustomButton()
view.addSubview(b1)
// auto layout
b1.translatesAutoresizingMaskIntoConstraints = false
b1.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
b1.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
をあなたは私がframe.size
を設定しているクラスで見ることができるようにframe.size = CGSize(width: 700, height: 100)
しかし、私はそれを実行すると、そうそうです:
幅は明らかにではありません。私が間違っているところには何か提案がありますか?
あなたはセンターボタンBoolについて説明し、その理由を説明します。私は結局、異なる位置のビューコントローラに6つのボタンを持つつもりです。この質問は、この質問の目的のためにのみ行われました。他のものは画面上のラジウムの場所になります – JamesG
私はそれが完璧に動作するすべての中心のものを取り出す場合、私は答えを受け入れました:) – JamesG
これを取って(と私はテストされていないコードを掲載し、 ...(1)ボトムラインの問題は、フレームと制約を混合し、自動サイズ変更をオフにすることでした。私はこれについてもっと説明するために私の答えに編集を投稿します。 (2)あなたはコードの重複を避けて、私は同意します。私の試みは、特定の問題を修正するだけでなく、 'init'メソッドにあると知っていた分だけ追加することでした。したがって、幅/高さ*と*は、各ボタンを中央に配置するか、指定したようにするかどうかに関係なく、できません。実際には.... – dfd