3

レイヤーに裏打ちされたビューがあり、アンカーポイントがどのように機能するかを理解したいのですが、(NSView のフレームプロパティを使用する代わりに) CALayer ジオメトリプロパティを操作することはまったく許可されていますか?

まず、ドキュメントから引用します:

anchorPoint のデフォルト値は (0.5,0.5) で、レイヤーの境界の中心に対応します。

しかし、アンカーポイントの値を (0.5,0.5) に直接変更しようとすると、オフセットが発生しました。例を次に示します。赤い領域は元の位置 (アンカー ポイントに何も適用されていない場合)、ボタンは左下隅に移動されました。

ここに画像の説明を入力

アンカーポイントを(0,0)ボタンに設定すると、あるべき場所に配置されます:

ここに画像の説明を入力

更新

ボタンをインスタンス化するために使用するコードは次のとおりです。

self.button = [[NSButton alloc] initWithFrame:NSMakeRect(130, 130, 100, 40)];
self.button.title = @"My Title";
self.button.wantsLayer = YES;
NSLog(@"Button anchor Point is : (%f;%f)", self.button.layer.anchorPoint.x, self.button.layer.anchorPoint.y);
[panelView addSubview:self.button];

興味深いことに、レイヤーに基づくビューのデフォルトのアンカー ポイントは 0,0 です。

NSLog(@"Button anchor Point is : (%f;%f)", self.button.layer.anchorPoint.x, self.button.layer.anchorPoint.y);

(0.000000;0.000000) を生成します

結局、OS X の展開ターゲットは 10.8 です

4

1 に答える 1

1

以下は、NSView に関する Apple のドキュメントからの引用です。

レイヤーに基づくビューを使用する場合、レイヤーを直接操作しないでください。

このコードは、レイヤーに基づくビューでできることの境界を越えているようです。

于 2012-12-06T10:19:44.197 に答える