0

ビュー コントローラーに UIView オブジェクトがあり、CALayer オブジェクトを UIView オブジェクトに追加したいと考えています。UIView オブジェクトの自動レイアウト構成を以下に示します。(申し訳ありませんが、まだ pix を埋め込むことができません。代わりにリンクをクリックしてください) リンク 1 リンク 2 (灰色の四角形は UIView オブジェクトです)

CALayer オブジェクト (myCAlayer) のサイズを設定し、次のコードを使用して UIView オブジェクト (myUIView) に追加しました。

myCALayer.frame = myUIview.layer.bounds
myUIview.layer.addSublayer(myCALayer)

muCALyer が myUIView を正確に埋めることができると期待していました。ただし、ttp://imgur.com/V4AN1Uy を参照してください (申し訳ありませんが、2 つ以上のリンクを投稿できないため、このリンクを手動で開いてください)、myCALayer (灰色の範囲) は myUIView (緑色の線) を超えています。

によってpo myUIview.layer.bounds、CGSize が次のようになっていることがわかりました。

サイズ : CGSize* - 幅 : 500.0 - 高さ : 380.0

width=500 は 600-2*50 から計算されたようです (600 は自動レイアウト下のビュー コントローラーのデフォルトの幅です) が、アプリ実行時の myUIView の実際の幅ではありません。実際のものはもっと狭いはずです。また、高さにも同じ問題があります。

実際の幅/高さを取得する方法はありますか? ありがとうございました!

4

1 に答える 1

0

解決しました。

myCALayer.frame = myUIview.layer.bounds
myUIview.layer.addSublayer(myCALayer)

問題は、上記のコードが viewDidLoad() メソッドにあることにあります。ただし、viewDidAppear() に移動する必要があるようです。これで問題は修正されました。

おそらく、viewDidLoad() ではまだレイアウトが完成していませんが、viewDidAppear() でレイアウトが完成しているためです。

于 2016-05-30T10:02:03.513 に答える