Ce que j'essaie réellement de faire est de mettre un WebKitView dans un ScreenSaver (qui hérite de NSView). Je suis totalement nouveau sur MacOS X et Cocoa (mais je connais très bien Objective-C et j'ai utilisé certaines parties de GNUStep). Ai-je besoin d'un lay-out? Je veux montrer seulement un contrôle dans le NSView entier.Comment mettre un contrôle normal dans un NSView?
Répondre
Dans votre méthode initWithFrame:isPreview:
, créez un WebView dans the usual way, puis, envoyez-vous un message addSubview:
, en passant la vue Web:
webView = [[WebView alloc] initWithFrame:frame];
[self addSubview:webView];
Si vous vous demandez ce rectangle que vous devez passer comme cadre de la WebView, lisez le View Programming Guide. Aussi, n'oubliez pas de libérer le webView
en dealloc
(ou autorelease le dans initWithFrame:isPreview:
).
Une fois que vous avez votre vue Web, vous devez charger une page dans celle-ci. Définir un intervalle d'animation suffisamment longue (au moins quelques secondes), et charger la page dans animateOneFrame
:
- (void) animateOneFrame {
[[webView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://google.com/"]]];
}
Vous pouvez également gérer WebViewProgressFinishedNotification
, et de mettre hors rechargeons la vue Web jusqu'à ce que cela arrive (pour compenser les connexions lentes ou imbibées). Vous allez faire cela avec une variable d'instance, que vous définissez à YES
dans les deux initWithFrame:isPreview:
et votre méthode de notification de gestionnaire et de test et mettre à NO
en animateOneFrame
:
- (void) animateOneFrame {
if (hasFinished) {
[[webView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://google.com/"]]];
hasFinished = NO;
}
}
[aScreenSaverView addSubview:aWebKitView];
Mais pourquoi ajouter une UIWebView en vue de l'économiseur d'écran lorsque vous pouvez simplement faire le UIWebView prendre le plein écran sur son propre? Introduire des hiérarchies de vues là où elles ne sont pas nécessaires n'est pas une bonne idée car cela augmente le traitement nécessaire pour afficher l'interface.
J'ai essayé [aScreenSaverView addSubview: aButton] et cela n'a pas fonctionné. Ai-je raté quelque chose ou les vues de webkit sont juste plus cool que les boutons? Je ne comprends pas ce que vous dites de faire en sorte que UIWebView prenne le plein écran, un économiseur d'écran ne doit-il pas hériter de ScreenSaver? – Pablo
il écrit un économiseur d'écran du cadre de l'économiseur d'écran, pas l'application iphone –
Oh mon mauvais. Je dois avoir mal interprété votre question. Excuses. –
Vous pouvez également vous inquiétez pas trop sur votre intervalle d'animation en appelant
[self stopAnimation];
à la fin de votre méthode animateOneFrame
.
- 1. Comment écrire un Tilde normal (~) en C#?
- 2. Les suppressions dans les relations un-à-un? Comportement normal?
- 3. Comment mettre un Dojox.grid dans un dijit.Dialog
- 4. Comment pouvez-vous mettre un contrôle à l'avant en mfc
- 5. Comment mettre à jour un contrôle en dehors d'un dialogue?
- 6. Comment mettre un contrôle WinForms sur de longues ToolBox
- 7. obtenir un ptr normal de shared_ptr?
- 8. NSView laisse des artefacts sur un autre NSView lorsque le premier est déplacé sur le second
- 9. Mettre en surbrillance du texte dans un contrôle Webbrowser .net
- 10. Comment ajouter un caractère mnémotechnique à un bouton normal dans Flex? (Besoin de raccourcis)
- 11. Impossible de masquer les contrôles dans NSView
- 12. Comment mettre un WebResponse dans un flux de mémoire?
- 13. Détermination de l'instance de NSView qui a initié un mouseDown:
- 14. Mettre l'accent sur un contrôle lors du changement d'onglet
- 15. Comment mettre un contrôle de formulaires Windows personnalisé dans une application WPF?
- 16. Rendre un contrôle utilisateur redimensionnable dans un contrôle de tabulation
- 17. Combiner des servlets et un serveur web "normal"
- 18. Comment "décorer" un contrôle dans WPF?
- 19. Comment enregistrer xml dans un contrôle webbrowser?
- 20. Comment: mettre en surbrillance le nœud sélectionné dans un UltraTree
- 21. WPF: Comment intégrer un contrôle de contenu dans un autre?
- 22. Comment simuler un événement click dans un contrôle webbrowser? .NET
- 23. Une application peut-elle reconnaître si elle s'exécute dans un cloud ou sur un serveur normal?
- 24. Conversion d'une chaîne codée Html à un « normal » Url
- 25. Défilement dans un contrôle gridview
- 26. Contrôle sans un formulaire dans VB.NET
- 27. Comment mettre 2 boutons dans une rangée dans un Zend_Form
- 28. Comment trouver un vecteur normal pointant directement du monde virtuel à l'écran dans Java3D?
- 29. Mettre en surbrillance un morceau de code dans un lstlisting
- 30. Mettre ModalPopupExtender dans un emplacement constant
Je ne fais que commencer, donc mon économiseur d'écran peut être n'importe quoi. Je l'ai créé avec Xcode et le plugin Screen Saver Standard Apple, mais le projet n'était pas livré avec un fichier nib ou nix, seulement un View.h et un View.m. Je serais parfaitement heureux de travailler avec un fichier nib, comment puis-je faire cela? Merci Peter. – Pablo
Désolé, cela fait longtemps que j'ai travaillé avec le framework ScreenSaver. J'ai édité ma réponse. –
Merci pour la réponse, semble prometteur. – Pablo