3

是否可以修改layer-backedanchorPoint的根上的属性?CALayerNSView

我有一个名为的视图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);
4

1 回答 1

2

在 10.8 上,AppKit 将控制 CALayer 上的以下属性(无论是“layer-hosted”还是“layer-backed”):geometryFlipped、bounds、frame(隐含)、position、anchorPoint、transform、shadow*、hidden、filters、和合成过滤器。... 使用适当的 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);
}
于 2014-02-17T08:58:58.517 回答