2008-12-12 45 views
0

我寫了一個顯示網頁的屏幕保護程序。它的工作原理與我想要的一樣,但是在預覽和輔助顯示中,Web視圖掛在屏幕的頂部。WebView呈現在我ScreenSaverView中的錯誤位置

例(從預覽):

screen saver bug http://img.skitch.com/20081212-nk5cqrgfds1funr1a3p72aw25q.preview.jpg
plasqSkitch上傳!

我的代碼非常簡單。從內initWithFrame:isPreview:我有以下代碼:

webview = [[WebView alloc] initWithFrame:frame 
          frameName:@"main" 
          groupName:@"main"]; 
[self addSubview:webview]; 

沒有人有任何想法是怎麼回事?

如果有人想玩這個項目,the code是在github上。

回答

1

我看着你的代碼,並且使用超視圖的(WebSaverView)框架矩形作爲WebView的框架。你應該改用它的邊界矩形([self bounds])。邊界矩形表示「超級視圖」內部的區域。正如你所看到的,這兩個可能並不總是具有相同的起源,這是造成這個問題的原因。你不應該調整你在initWithFrame:中傳遞的幀,因爲起源可能有一個很好的理由不是0,0。

+0

我很好奇這個原因可能是什麼。在我的主要顯示器上,它的值爲0,0時是1440x900,但是在我的第二個顯示器上,它是1920x1200,在1440452。這些提供了什麼價值?感謝您的洞察力,這確實解決了我的問題,並且感覺不那麼難看。 – Dustin 2008-12-12 22:47:11

1

我認爲你給WebView的框架座標是錯誤的。請記住,視圖的框架是根據超視圖的座標系(邊界)表示的。

如果我正確地得到你想要做的事情,你應該使視圖像超級視圖的-bounds一樣大:通常是從(0,0)到(寬度,高度)的矩形。

+0

有趣。我在進入的框架周圍進行了一些檢查,發現原點偏移只是......很奇怪。如果我將它設置爲0,則會發生正確的事情。 – Dustin 2008-12-12 21:10:05