私はiOS開発を初めて利用しています。私はストーリーボードやxib/nibなしでレイアウトを構築したい。だから私はプログラムで制約を追加しようとしています。 プログラムで制約を追加する方法についてのチュートリアルを検索しました。しかし、このビューは正しく表示されません。プログラムで動的な幅の制約を追加する方法
私は私のViewControllerクラスでこのコードをしようとしている:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let testView = UIView()
self.view.addSubview(testView)
// Add Constraints
self.view.translatesAutoresizingMaskIntoConstraints = false
testView.translatesAutoresizingMaskIntoConstraints = false
let top = NSLayoutConstraint(item: testView, attribute: .top, relatedBy: .equal
, toItem: self.view, attribute: .top, multiplier: 1, constant: 50.0)
let bottom = NSLayoutConstraint(item: testView, attribute: .bottom, relatedBy: .equal
, toItem: self.view, attribute: .bottom, multiplier: 1, constant: -50.0)
let leading = NSLayoutConstraint(item: testView, attribute: .leading, relatedBy: .greaterThanOrEqual, toItem: self.view, attribute: .leading, multiplier: 1, constant: 50.0)
let trailing = NSLayoutConstraint(item: testView, attribute: .trailing, relatedBy: .greaterThanOrEqual, toItem: self.view, attribute: .trailing, multiplier: 1, constant: -50.0)
self.view.addConstraints([top, bottom, leading, trailing])
}
一般的に、彼らは、ビューやチュートリアルでは、幅と高さについての制約の大きさを定義する必要はありません。しかし、ビューはチュートリアルで見ることができます。私の場合、私のtestViewは、トップ、ボトム、先行および後続の制約が設定されていてもアプリに表示することはできません。私は何かを逃したのですか?どうしたの?チュートリアルの
1: http://www.knowstack.com/swift-nslayoutconstraint-programatically-sample-code/
編集: 私はより多くを説明するのをしてみましょう。ユニバーサルデバイスに適したUIView
を作成したいと思います。 UIView
には、先頭、下位、先頭および末尾にconstant: 10
という制約があります。だから、私はUIView
のサイズを設定する必要はありません。
Expected Result (I am using draw tool to simulate the result)
ようこそ。あなたは尋ねる前にすべての類似した質問をチェックしましたか?たとえば、大規模な回答と説明を持っているようなもの:http://stackoverflow.com/questions/26180822/swift-adding-constraints-programmatically –
私は以前この質問をチェックしていました。 「UIView」のサイズは、最も高いレートの答えの幅:100、高さ:100に定義されていました。私は私の質問を更新しました。確認してください、ありがとう。 – kk777
他の解決策がない場合、または複数の回答がある場合は、制約を追加してからview.layoutIfNeededを追加してみてください。 –