我已經創建了一個相當簡單的屏幕保護程序,可以在Mac OS 10.6.5上正常運行。如何激活Cocoa/Obj-C中的自定義屏幕保護程序預覽?
配置屏幕已經積累了很多不同的選項,我試圖在configureSheet窗口上實現我自己的預覽,這樣用戶(當前就是我)可以立即看到更改的效果,而不必測試每個更改。
我已經添加了一個NSView
到configureSheet和在Interface Builder中自定義類設置爲我ScreenSaverView子類。我知道drawRect:
正在觸發,因爲我可以刪除將視圖清除爲黑色的條件,並且我的自定義預覽不再以黑色背景顯示。 這裏是一個函數(基於幾個精細的教程在互聯網上):
- (void)drawRect:(NSRect)rect
{
if (shouldDrawBackground)
{
[super drawRect:rect];
shouldDrawBackground = NO;
}
if (pausing == NO)
[spiroForm drawForm];
}
的spiroForm類只是自己畫成使用NSBezierPath
的ScreenSaverView幀,如前所述,是不成問題的實際屏保或內置在系統首選項預覽。
[configureView initWithFrame:[configureView bounds] isPreview:YES];
:自定義預覽(configureView)幀的configureSheet對象返回到操作系統之前傳遞到init方法爲,嗯,本身(因爲它的自定義類是我ScreenSaverView子類。)的
-initWithFrame
方法被調用configureSheet
也許我不必那樣做?這只是我試圖看看它是否需要繪圖。
我最終加入了代表對configureSheet嘗試通過windowWillBeginSheet
和windowWillEndSheet
通知觸發我的預覽的startAnimation
和stopAnimation
功能,但這些似乎並沒有被獲取調用由於某種原因。該委託聲明爲NSObject <NSWindowDelegate>
,並在返回configureSheet對象之前將該委託設置在configureSheet方法中。
我一直在這個工作了幾天,但一直沒有找到任何關於操作系統如何管理ScreenSaverView對象的信息(我認爲這是我試圖通過運行我自己的副本來模擬)。
有誰知道如何管理這個或者如果蘋果文件它的地方的任何建議,我還沒有發現?這是不是真的需要將屏幕保護工作,我只是覺得這會很有趣(我也看了一種方式來使用OS預覽,但同時configureSheet被激活,它的封鎖。)
請花時間使用編輯器控件正確設置代碼的格式。 – 2011-01-08 21:56:47