高さが300pxに設定され、画面の下部に設定されたラベルが画面に表示され、UIViewを作成したいそれは正確にそれを覆います。私が使用するコードは新しいview.frame.yとlabel.frame.yが一致しない
let theFrame = CGRect(x: myLabel.frame.minX, y: myLabel.frame.minY, width: myLabel.frame.width, height: myLabel.frame.height)
newVu = UIView(frame: theFrame)
let newColor = UIColor(colorLiteralRed: 0.5, green: 0.5, blue: 1, alpha: 0.5)
newVu.backgroundColor = newColor
self.view.addSubview(newVu)
私は新しいUIViewのラベルより約20ポイント高いシフトしている取得した結果です。 (編集:GeorgeGreenがコメントに役立つように、これは、Top Layout Guideの下部に拘束されているVertical StackView内にラベルがあるためです。したがって、ラベルのYはスタックの上部を基準にしています画面の上部ではなく、画面であることを確認してください))作業中に参照フレームが異なるのは明らかですが、すべてを同じ参照フレームに入れるためには何が必要ですか?編集:または、別の方法で尋ねたラベルの "絶対" X座標とY座標を取得する方法の画面に埋め込まれているビューの数に関係なく、正確にオーバーレイするために新しいビューをドロップしますか? IBで
オリジナル画面:コードの
結果は、(新しいビューは半透明であり、下部に黄色の帯に注意してください):
これらのコードはどこに追加しましたか? –
@ LuanTranこのコードは、viewWillLayoutSubviews()から呼び出され、ビューが最初に表示されたときに起動され、次にviewWillTransition()からも呼び出され、向きが縦長から横向きに戻ったときにサイズをリセットします。後者は実際には新しいビューを作成するのではなく、newView.frameを更新しますが、すべての場合に黄色のバンドが表示されます。 – ConfusionTowers
あなたのコードを 'viewDidLayoutSubviews()'に移動して、システムが何らかの自動挿入をしたことがありますか?また、私は 'myLabel'が' self.view'の直接のサブビューであると仮定します。興味のないところでは、単にフレームセットの 'newVu = UIView(frame:myLabel.frame)'(なぜならこれは問題を引き起こしていません)でしょうか? –