4

CALayer の API では、レイヤーの位置を設定するために「位置」が使用されます。

私自身のテストでは、bounds.origin を設定しても何も起こりません。何か不足していますか?

4

2 に答える 2

4

レイヤーのbounds.origin座標系の原点が、そのスーパーレイヤー内のレイヤーのフレームを基準にしてどこにあるかを制御します。これを変更すると、次の 2 つの目に見える効果があります。

  1. レイヤーのサブレイヤーの位置。たとえば、 をスクロールするUIScrollViewと、スクロール ビューはサブビューのフレームを変更しません。それは単にそのbounds.origin. スクロール ビューを備えたおもちゃのアプリをセットアップしNSLog("scroll view bounds = %@", NSStringFromCGRect(scrollView.bounds));、タイマーまたはその他のトリガーを使用して、何が起こっているかを把握することをお勧めします。

  2. のグラフィックス コンテキスト座標系の原点drawInContext:。ほとんどの場合、この効果はビューのdrawRect:メソッドで見られます。あなたのCGContext内部drawRect:は によって翻訳されますself.bounds.origin

View Programming Guide for iOSの「View Geometry and Coordinate Systems」とCore Animation Programming Guideの「Layer Objects Define Their Own Geometry」について読むと役立つ場合がありますが、実際にはどちらも境界について十分に説明していません。元。

于 2013-06-25T19:13:01.903 に答える
1

境界の四角形を変更すると、レイヤー自体の座標系でのコンテンツの位置とサイズが変更されます。フレーム (または位置) を変更すると、そのスーパー レイヤーの座標系でレイヤーの位置が変更されます。通常、境界ではなく、フレームのみを変更します。

于 2013-06-25T19:10:39.853 に答える