2012-12-06 106 views
3

我有一個支持圖層的視圖,並且想要了解錨點如何工作,它是否允許使用CALayer幾何屬性(而不是使用NSView的框架屬性)用於圖層背景視圖的核心動畫幾何體

首先,從文檔報價:

爲anchorPoint的默認值是(0.5,0.5),其對應 層的邊界

中心但當我試圖改變價值的直接指向(0.5,0.5),我得到了抵消。下面是例子,紅色區域是原來的位置(當施加在定位點什麼),按鈕被移到了左下角:

enter image description here

當我設置錨點(0,0 )按鈕放置在它應該是:

enter image description here

更新

下面是我用實例化按鈕的代碼:

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

+0

非常有趣。如果將旋轉變換應用於圖層會發生什麼?它應該圍繞它的錨點旋轉,這似乎是你左下角的情況。在更改錨點之前如何修改_layer_幾何?你修改位置,框架或邊界嗎?在設置錨點之前,您是否修改了_view_幾何? –

+0

我使用代碼和一些日誌輸出更新問題。 – dmitrynikolaev

+0

+1好問題。調用'[NSView addSubview]'是否也將子視圖的圖層添加到接收器的內容層?文檔沒有提到它。 – trojanfoe

回答

1

以下是來自蘋果NSView文檔的報價:

當使用圖層支持的視圖時,您不應該直接與圖層的 進行交互。

似乎這段代碼跨越了你可以用層次支持視圖做的事情的邊界。

+0

有時你只需要。你有沒有試過在10.8以下的東西中使用'NSScrollView'中的圖層?這是不可能的,除非你使用'makeBackingLayer'。 – trojanfoe

+0

使用圖層與使用圖層不同。似乎使用分層視圖沒什麼不好。但是CALayer上沒有幾何(至少)操作。 – dmitrynikolaev

+0

那麼我自己的應用程序會創建一個圖層層次結構,其中至少有一個子圖層使用'layer.frame = x'等來移動。這可以毫無問題地工作。 – trojanfoe