2017-09-09 22 views
0

視覚的な言語で制約を作成していますが、追加しようとするとエラーが発生します。iOS Contestraints原因SIGABRTエラー

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unable to parse constraint format: 
Expected a view 
V:|==[timer]==| 
    ^' 

だから==を削除し、それが動作します:

class TimerViewController : UIViewController{ 
    let timer = TimerView() 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.view.backgroundColor = .white 
     self.view.addSubview(timer) 
     self.createContraints() 
    } 

    func createContraints(){ 
     self.timer.translatesAutoresizingMaskIntoConstraints = false 
     let horizontalConstraints = 
NSLayoutConstraint.constraints(withVisualFormat: "H:|[timer]|", options: NSLayoutFormatOptions(), metrics: nil, views: ["timer" : timer]) 
     let verticleContraints = 
NSLayoutConstraint.constraints(withVisualFormat: "V:|==[timer]==|", options: NSLayoutFormatOptions(), metrics: nil, views: ["timer" : timer]) 
     self.view.addConstraints(horizontalConstraints) 
     self.view.addConstraints(verticleContraints) 
    } 
} 
+0

コードでこれを行う理由はありますか?ほとんどの場合、インタフェースビルダーでこのようなことを実行するのははるかに簡単で、エラーが起こりにくいです。 – Adrian

+0

@Brandonに同意すると、ここに==ここにコンソールを追加する必要はありません。このようなエラーが表示されます。 'NcnvalidArgumentException'、理由: '制約フォーマットを解析できません: ビュー V:| == [v0] == | ^ ' 'は、あなたの問題の原因を教えてくれます。 – 3stud1ant3

答えて

2

Xcodeはあなたにエラーが発生します。

+0

==を削除しても、それでもクラッシュする – Snifferdog

+0

@Snifferdogそうではありません。私は両方とも==を使わずに同じコードを実行しました。 Xcodeコンソール/ログでエラーを読んでください。 – Brandon

+0

さて、私はその制約なしで試してみたと思っていたが、うまくいった。ありがとうございました。 – Snifferdog

関連する問題