2013-11-25 186 views
7

我正在構建一個QuickLook插件。我想要改變用戶點擊空格鍵時彈出的窗口的寬度。設置QuickLook插件的窗口大小

我讀過這裏有兩個項目的info.plist文件中的高度和寬度可定製的關鍵。即使我更改這些值,我也無法將預覽窗口的大小設置爲所需的大小。

我不知道還有什麼可以嘗試的。任何想法?

謝謝!

回答

4

以爲我會對此稍微探討一下。我還沒有嘗試過以下任何建議,所以沒有人能夠獲得他們的希望。我假設你正在使用發電機回調:

OSStatus (*GeneratePreviewForURL)(
    void *thisInterface, 
    QLPreviewRequestRef preview, 
    CFURLRef url, 
    CFStringRef contentTypeUTI, 
    CFDictionaryRef options 
); 

別的之前,你可能手動檢查options字典參數,並驗證kQLPreviewPropertyWidthKeykQLPreviewPropertyHeightKey鍵確實映射到所期望的CFNumber值。

參考這些屬性,蘋果QuickLook的編程指南說:

注意,這家酒店是一個提示;對於某些類型的預覽,「快速查看」可能會自動設置寬度 。該值必須是封裝在CFNumber對象中的 。

編輯:如果預覽表示是靈活的,你可以嘗試尋找爲此QuickLook的榮譽你的尺寸的提示,按照上面的說法只是一個想法預覽類型。)

運行nm在QuickLook框架二進制文件中顯示了一些未公開的kQLPreviewProperty--常數以及上述寬度和高度鍵。引起我注意的是kQLPreviewPropertyAutoSizeKey。回顧蘋果關於忽略暗示設置大小自動的聲明,這可能是重要的?在QuickLook.framework/Headers/QLBase.h繼約定,你可以嘗試宣告

extern const CFStringRef kQLPreviewPropertyAutoSizeKey; 

那麼你可以嘗試CFNumber 0與在options字典,屬性鍵關聯。還有其他未註明的密鑰,例如kQLPreviewPropertyAttributesKey

回到你提到的Info.plist中,蘋果says那些鍵QLPreviewWidthQLPreviewHeight

這樣可爲快速查找的提示爲 預覽寬度(點)。 它使用這些值如果發生器花費太長時間來產生預覽 。(強調增加)

這是有人提出在您的發電機中調用sleep()的可怕建議。但是我爲感到困惑,爲什麼蘋果會根據發生器延遲的大小提示進行製作。 (?)

編輯:還要注意上述聲明說,Info.plist中提示必須在點(而不是像素來表示),一個依賴於用戶的屏幕分辨率unit

+1

生成器創建一個圖像或HTML,因此預覽將基於默認的自然尺寸,不是嗎? –

+0

@Keniger,這很有趣。我想知道CSS min-width屬性在HTML預覽中會有什麼效果。 – jrodatus

+0

謝謝你們的幫助。我已經嘗試添加最小寬度。它改變了它自己的「html」的大小,但不是quicklook插件窗口的大小。該窗口始終是相同的大小... – Andres

2

最近我正在開發一個使用HTML + CSS的快速查看插件,並面臨同樣的問題。 我的解決方案是測試不在Xcode和qlmanage中的插件作爲可執行文件,而是從我的用戶庫中嘗試使用真實.qlgenerator。

從我的用戶庫中調用生成器時,Quick Look窗口的調整大小與我在* -Info.plist中指定的方式完全相同。

+0

我會檢查一下,謝謝你的更新! – Andres