###前提・実現したいこと
Swiftを使って、Storyboardからでは無く、コードからVFLを用いてViewの制約を付けようとしているのですが、以下のようなエラーメッセージが出てしまいます。エラーの原因と直し方をご存知の方、どなたか教えては貰えないでしょうか?
縦、横のサイズは50で画面の左上にぴったりくっつくように制約を付けたいです。
こんな感じになるようにしたいです。
###発生している問題・エラーメッセージ
Thread 1: signal SIGABRT libc++abi.dylib: terminating with uncaught exception of type NSException
###該当のソースコード
import UIKit class ViewController: UIViewController { let viewTest = UIView(frame: CGRect.zero) override func viewDidLoad() { super.viewDidLoad() viewTest.backgroundColor = UIColor.red viewTest.translatesAutoresizingMaskIntoConstraints = false // コードからAuto Layoutをする際、必ずViewを配置してから、Viewの制約を設定すること // 変更前 viewTest.addSubview(viewTest) self.view.addSubview(viewTest) let viewsDictionary = ["view": viewTest] let metrics = ["width": 50] // 変更した箇所: 変更前 "H:|[view]|"、 変更後 "H:|[view]" // 次の箇所を修正した所、動くようになりました // 変更前 viewTest.addConstraints、 変更後 view.addConstraints viewTest.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[view]", options: .alignAllBottom, metrics: metrics, views: viewsDictionary)) // 変更した箇所: 変更前 "V:|[view]|"、 変更後 "V:|[view]" // 次の箇所を修正した所、動くようになりました // 変更前 viewTest.addConstraint、 変更後 view.addConstraint viewTest.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[view]", options: .alignAllBottom, metrics: metrics, views: viewsDictionary)) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }
###試したこと
viewTest.addConstrains(NSLayoutConstraint.constraints()のoptions: の箇所を [] から .alignAllBottom に変更したり、metrics: の箇所を nil から metrics を入れて見たりしましたが、関係ないのか、エラーの内容は全く同じでした
###補足情報(言語/FW/ツール等のバージョンなど)
言語はSwift4, Xcode9.2を使っていて、SimulatorはiPhone 8 Plus で実行しています
回答1件
あなたの回答
tips
プレビュー