CALayer の API では、レイヤーの位置を設定するために「位置」が使用されます。
私自身のテストでは、bounds.origin を設定しても何も起こりません。何か不足していますか?
CALayer の API では、レイヤーの位置を設定するために「位置」が使用されます。
私自身のテストでは、bounds.origin を設定しても何も起こりません。何か不足していますか?
レイヤーのbounds.origin
座標系の原点が、そのスーパーレイヤー内のレイヤーのフレームを基準にしてどこにあるかを制御します。これを変更すると、次の 2 つの目に見える効果があります。
レイヤーのサブレイヤーの位置。たとえば、 をスクロールするUIScrollView
と、スクロール ビューはサブビューのフレームを変更しません。それは単にそのbounds.origin
. スクロール ビューを備えたおもちゃのアプリをセットアップしNSLog("scroll view bounds = %@", NSStringFromCGRect(scrollView.bounds));
、タイマーまたはその他のトリガーを使用して、何が起こっているかを把握することをお勧めします。
のグラフィックス コンテキスト座標系の原点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」について読むと役立つ場合がありますが、実際にはどちらも境界について十分に説明していません。元。
境界の四角形を変更すると、レイヤー自体の座標系でのコンテンツの位置とサイズが変更されます。フレーム (または位置) を変更すると、そのスーパー レイヤーの座標系でレイヤーの位置が変更されます。通常、境界ではなく、フレームのみを変更します。