你可以设置一个的NSView根层的anchorPoint?(Can you set the anch

2019-08-16 21:23发布

是否有可能修改anchorPoint上root属性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);

Answer 1:

上10.8,了AppKit将控制上的CALayer以下性质(两者当“层托管”或“层支持的”):geometryFlipped,边界,帧(暗示),位置,anchorPoint,变换,阴影*,隐藏,过滤器,和compositingFilter。 ...使用适当的NSView盖的方法来更改这些属性。

基本上,它会设置的锚为[0,0]从[0.5,0.5],考虑到这一点我使用的是这样的:

+(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);
}


文章来源: Can you set the anchorPoint of the root layer on an NSView?