你能在NSView上设置根层的anchorPoint吗?

时间:2013-02-11 14:34:40

标签: macos cocoa core-animation quartz-graphics

是否可以修改支持图层的anchorPoint的根CALayer上的NSView属性?

我有一个名为myView的视图,似乎每次设置anchorPoint时,它都会在下一个运行循环中被覆盖。我这样做:

NSView *myView = [[myView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];

//set the root layer
myView.layer = [CALayer layer];
myView.wantsLayer = YES;

//gets overridden on the next run loop
myView.layer.anchorPoint = CGPointMake(1,1);

1 个答案:

答案 0 :(得分:1)

  

在10.8上,AppKit将控制CALayer上的以下属性   (在“图层托管”或“图层支持”时):geometryFlipped,bounds,   frame(隐含),position,anchorPoint,transform,shadow *,hidden,   filters和compositingFilter。 ...使用适当的NSView封面   改变这些属性的方法。

基本上它会将锚从[0.5,0.5]设置为[0,0],为此我会使用类似的东西:

+(void) accountForLowerLeftAnchor:(CALayer*)layer
{
    CGRect frame = layer.frame;
    CGPoint center = CGPointMake(CGRectGetMidX(frame), CGRectGetMidY(frame));
    layer.position = center;
    layer.anchorPoint = CGPointMake(0.5, 0.5);
}