コントローラの上部、ナビゲーションバーの下にビュー(addressLabelBackground
)があります。ポートレートモードでは問題なく表示されますが、デバイスを横向きにするとサイズを変更しようとしています。制約を追加した後、ビューとそのサブビューが消える
私はaddressLabelBackground
をビューの左側(0)、ビュー(0)の右側とナビゲーションバー(0)に固定してストーリーボードにいくつかの制約を追加しようとしましたが、アプリケーションを実行するときビューとそのすべてのサブビューが消えます。
私はまた、(私はサブビューのためにやったように)プログラムで制約を追加しようとしましたが、addressLabelBackground
とその中のサブビューは消えます。
はここ(viewDidLoad
中)コードです: 答えた後に更新、クラッシュ
view.addSubview(addressLabelBackground)
addressLabelBackground.addSubview(addressLabel)
addressLabelBackground.addSubview(turnToTechLogo)
addressLabelBackground.translatesAutoresizingMaskIntoConstraints = false
addressLabelBackground.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
addressLabelBackground.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
addressLabelBackground.topAnchor.constraint(equalTo: (navigationController?.navigationBar.bottomAnchor)!).isActive = true
addressLabel.font = UIFont.boldSystemFont(ofSize: 16.0)
addressLabel.translatesAutoresizingMaskIntoConstraints = false
addressLabel.centerXAnchor.constraint(equalTo: addressLabelBackground.centerXAnchor).isActive = true
addressLabel.topAnchor.constraint(equalTo: addressLabelBackground.topAnchor).isActive = true
addressLabel.bottomAnchor.constraint(equalTo: addressLabelBackground.bottomAnchor).isActive = true
縦向きと横向きの両方で完全に罰金addressLabel作業のための制約だ - それは、ビューの中央に留まります。しかし、同じ方法で、またはストーリーボードでaddressLabelBackground
の制約を追加しようとすると、すべてが消えます。
このビューをナビゲーションバーの下に固定し、デバイスが横長モードのときに画面の幅に合わせて幅を広げるにはどうすればよいですか?
EDIT(翌日):まだこれを把握しようとしています。私はinnerContainer
と呼ばれるサブビューを作成し、そのtopAnchorにそれをピン留め試してみた:
let frame = CGRect(x: 0, y: 20, width: self.view.bounds.width, height: self.view.bounds.height-20)
let innerContainer = UIView(frame: frame)
self.view.addSubview(innerContainer)
innerContainer.addSubview(addressLabelBackground)
addressLabelBackground.translatesAutoresizingMaskIntoConstraints = false
addressLabelBackground.topAnchor.constraint(equalTo: innerContainer.topAnchor).isActive = true
しかし、再び、それが消えます。
私はまた、ストーリーボードのtopLayoutGuideの上端(0点)にピンインしてみましたが、それも消えてしまいました。
これは完全な制約条件ですか?そうでない場合は、残りの部分を投稿してください。 – dfd
彼らは必要ではなかったので、私はプログラム上の制約を取りました。今私は 'view.addSubview(addressLabelBackground)'を持っています。そして、私は 'addressLabel'と' logo 'を 'addressLabelBackground'の中に入れました。今のところ、それらのサブビューは方向に関係なく 'addressLabelBackground'の中に置かれます。しかし、私はまだ 'addressLabelBackground'をランドスケープモードで全幅にリサイズすることができません – KingTim
次に、addressLabelBackgroundにいくつかの制約がありません。あなたはそれにcenterXとtopを与えましたが、それは本質的な幅は何ですか?テキスト属性値を追加しましたか? – dfd