2008-12-12 5 views
0

J'ai écrit un économiseur d'écran qui affiche une page Web. Il fonctionne exactement comme je le souhaite sur mon écran principal, mais dans l'aperçu et les affichages secondaires, la vue Web est suspendue en haut de l'écran.Les rendus WebView au mauvais endroit dans mon ScreenSaverView

Exemple (de prévisualisation):

screen saver bug http://img.skitch.com/20081212-nk5cqrgfds1funr1a3p72aw25q.preview.jpg
Téléchargé par l » Skitch plasq!

Mon code est assez simple. À partir de initWithFrame:isPreview: Je le code suivant:

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

Quelqu'un at-il une idée de ce qui se passe?

Si quelqu'un veut jouer avec le projet, the code est sur github.

Répondre

1

J'ai regardé votre code et vous utilisez le rectangle d'encadrement de superview (WebSaverView) comme cadre de WebView. Vous devriez plutôt utiliser son rectangle de délimitation ([self bounds]). Le rectangle englobant représente la zone "à l'intérieur" de l'aperçu. Comme vous l'avez vu, les deux n'ont pas toujours la même origine, ce qui cause ce problème. Vous ne devriez pas ajuster le cadre dans lequel vous êtes passé initWithFrame:, puisque l'origine a probablement une très bonne raison de ne pas être 0,0.

+0

Je suis curieux de savoir ce que cette raison pourrait être. Sur mon affichage principal, c'est 1440x900 à 0,0, mais sur mon secondaire, c'est 1920x1200 à 1440,452. Quelle valeur offrent-ils? Merci pour la perspicacité, cela résout mon problème et me sens moins moche. – Dustin

1

Je pense que la trame que vous donnez au WebView est dans les mauvaises coordonnées. Souvenez-vous que la trame d'une vue est exprimée en fonction du système de coordonnées de la vue d'ensemble (bornes).

Vous devriez faire la vue aussi grande que -bounds, si je reçois correctement ce que vous voulez faire: habituellement un rect de (0,0) à (largeur, hauteur).

+0

Intéressant. J'ai fait un peu plus d'inspection autour du cadre qui arrivait et j'ai trouvé que le décalage d'origine était juste ... étrange. Si je le mets à 0, la bonne chose arrive. – Dustin

Questions connexes