10 conseils utiles et des extraits de l'iPhone d'Apple et Xcode

Jeudi, Novembre 12, 2009

1. Cordes sur plusieurs lignes

Dans Xcode, vous pouvez "casser" une chaîne sur plusieurs lignes en insérant à la fin une barre oblique inverse. Cette fonctionnalité peut être utile lorsque, par exemple, nous voulons HTML pour insérer du texte dans un contrôle UIWebView

Objective-C:
  1. htmlData = @ " \ NSString * HTMLData @ = "\
  2. <html> <head> \
  3. type= <style \" text/css \"> \
  4. (body background: # 000; color: # FFF) \
  5. </ Style> \
  6. <title> rapport </ title> </ head> \
  7. <body> \
  8. <h1> HTML de test </ h1> \
  9. <ul> \
  10. <li> Texte HTML </ li> \
  11. Posté le <li> </ li> \
  12. <li> plus «lignes </ li> \
  13. </ Ul> </ body> </ html> ";
  14. htmlData baseURL : [ NSURL URLWithString : @ "http://www.saidmade.com/" ] ] ; [LoadHTMLString WebView: HTMLData baseURL: [NSURL URLWithString: @ "http://www.saidmade.com/"]];

2. Transitions View avec "effet papier plié"

Voici une fonction très utile pour naviguer et risflogliare deux UIView

Objective-C:
  1. / / Effectue un effet de transition à partir d'un UIView CURL une UIView
  2. / / @ Params espace réservé (UIView) principales
  3. / / @ Params fview (UIView) à partir
  4. / / @ Params TView (UIView) arrivée
  5. / / @ Params avant (BOOL) feuilletée haut ou le bas
  6. ) makeTansitionFromView : ( UIWindow * ) placeholder fromView : ( UIView * ) fview toView : ( UIView * ) tview forward : ( BOOL ) forward { - (Void) makeTansitionFromView: (UIWindow *) fromView espace réservé: (UIView *) pour visionner fview: (UIView *) TView avant: (BOOL) vers l'avant (
  7. nil context : NULL ] ; [UIView beginAnimations: contexte Nil: NULL];
  8. 1.5 ] ; [SetAnimationDuration UIView: 1.5];
  9. forward?UIViewAnimationTransitionCurlUp : UIViewAnimationTransitionCurlDown forView : placeholder cache : YES ] ; [SetAnimationTransition UIView: à l'avant? UIViewAnimationTransitionCurlUp: UIViewAnimationTransitionCurlDown forView: cache d'espace réservé: YES];
  10. ; [TView removeFromSuperview];
  11. fview ] ; [AddSubview Placeholder: fview];
  12. ; [Fview removeFromSuperview];
  13. tview ] ; [AddSubview Placeholder: TView];
  14. ; [UIView commitAnimations];
  15. )

Peut être utilisé de cette façon:

Objective-C:
  1. / / Display - People Forward
  2. window fromView : primaView.view toView : secondaView.view forward : YES ] ; [MakeTansitionFromView Self: fromView fenêtre: pour visionner primaView.view: secondaView.view avant: OUI];
  3. / / Hide - arrière
  4. window fromView : secondaView.view toView : primaView.view forward : NO ] ; [MakeTansitionFromView Self: fromView fenêtre: pour visionner secondaView.view: primaView.view avant: NO];

3. Prévenir atténuation automatique d'affichage

Pour être utilisé avec précaution, sous peine d'une consommation immédiate de la batterie, cette ligne de code vous permet de garder notre application toujours visible, ce qui empêche l'iPhone d'Apple passe en "stand-by»:

Objective-C:
  1. .idleTimerDisabled = YES ; [SharedApplication UIApplication]. IdleTimerDisabled = YES;

4. Réseau indicateur d'activité

L'animation qui apparaît sur la barre d'état en haut de l'écran de l'iPhone d'Apple, peut également être utilisé dans notre application à souligner l'activité de réseautage:

Objective-C:
  1. / / Show Network indicateur d'activité ...
  2. .networkActivityIndicatorVisible = YES ; [SharedApplication UIApplication]. NetworkActivityIndicatorVisible = YES;
  3. / / Your opérations ...
  4. / / Hide Réseau indicateur d'activité ...
  5. .networkActivityIndicatorVisible = NO ; [SharedApplication UIApplication]. NetworkActivityIndicatorVisible = NO;

5. Indicateur d'activité du personnel

Si vous n'avez pas la barre d'état, peut être utile pour montrer notre indicateur d'activité:

Objective-C:
  1. / / Global quelque part ... Dipo un délégué (. h)
  2. UIActivityIndicatorView * activité;
  3. / / Dans loadview ou viewDidLoad initialiser l'indicateur d'activité
  4. initWithActivityIndicatorStyle : UIActivityIndicatorViewStyleWhite ] ; = activité [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle: UIActivityIndicatorViewStyleWhite];
  5. activity ] ; [AddSubview self.vue: Activité];
  6. CGPointMake ( 160, 240 ) ] ; [SetCenter Activité: CGPointMake (160, 240)];
  7. ; [Activité StopAnimating];
  8. / / Quand nous avons besoin
  9. ) someMethod { - (Void) (uneMethode
  10. ; [Activité StartAnimating];
  11. / / À faire ...
  12. ; [Activité StopAnimating];
  13. )

6. Emplacement

Avec cet extrait, vous pouvez comprendre la «langue» et mettre notre dispositif:

Objective-C:
  1. / / Vérification de la langue et de localisation
  2. defaults = [ NSUserDefaults standardUserDefaults ] ; NSUserDefaults * defaults = [] standardUserDefaults NSUserDefaults;
  3. languages = [ defaults objectForKey : @ "AppleLanguages" ] ; NSArray * langues = [defaults objectForKey: @ "AppleLanguages"];
  4. currentLanguage = [ languages objectAtIndex : 0 ] ; NSString * currentLanguage = [langues objectAtIndex: 0];
  5. , [ [ NSLocale currentLocale ] localeIdentifier ] ) ; NSLog (@ "Current Locale:% @", [[currentLocale NSLocale] LocaleIdentifier]);
  6. , currentLanguage ) ; NSLog (@ "langage courant:% @", currentLanguage);

7. iPhone ou iPod?

Cette classe est utile pour déterminer quel périphérique Apple travaille à notre demande. Non seulement nous pouvons déterminer le modèle (l'iPhone ou l'iPod Touch), mais aussi la version. Créez deux fichiers UIDevice-hardware.h et UIDevice-hardware.m

Objective-C:
  1. / / UIDevice-hardware.h
  2. # <UIKit/UIKit.h> Importation
  3. # Define IPHONE_1G_NAMESTRING @ "iPhone 1G"
  4. # Define IPHONE_3G_NAMESTRING @ "iPhone 3G"
  5. # Define IPHONE_3GS_NAMESTRING @ "3GS iPhone"
  6. # Define IPOD_1G_NAMESTRING @ "iPod touch 1G"
  7. # Define IPOD_2G_NAMESTRING @ "iPod touch 2G"
  8. Hardware ) @ UIDevice interface (Hardware)
  9. * ) platform; - (NSString *) plate-forme;
  10. * ) platformString; - (NSString *) platformString;
  11. @ End

Objective-C:
  1. / / UIDevice-hardware.m
  2. # Import "UIDevice-hardware.h"
  3. # Include <sys/types.h>
  4. # Include <sys/sysctl.h>
  5. Hardware ) @ UIDevice mise en œuvre (Hardware)
  6. / *
  7. Plates-formes
  8. iPhone1, 1 = iPhone 1G
  9. iPhone1, 2 = iPhone 3G
  10. iPhone2, 1 = iPhone 3G
  11. iPod1, 1 = iPod touch 1G
  12. iPod2, 1 = iPod touch 2G
  13. * /
  14. * ) platform { - (NSString *) plate-forme (
  15. size_t taille;
  16. , NULL , & size, NULL , 0 ) ; sysctlbyname (hw.machine ", NULL, & size, NULL, 0);
  17. machine = malloc ( size ) ; char * machine = malloc (size);
  18. , machine, & size, NULL , 0 ) ; ysctlbyname (hw.machine ", une machine, & size, NULL, 0);
  19. platform = [ NSString stringWithCString : machine ] ; NSString * platform = [stringWithCString NSString: machine];
  20. machine ) ; libre (machine);
  21. retour plate-forme;
  22. )
  23. * ) platformString { - (NSString *) (platformString
  24. platform = [ self platform ] ; NSString * plateforme = [plate-forme de self];
  25. platform isEqualToString : @ "iPhone1,1" ] ) return IPHONE_1G_NAMESTRING; if ([isEqualToString plate-forme: @ "iPhone1, 1"]) IPHONE_1G_NAMESTRING retour;
  26. platform isEqualToString : @ "iPhone1,2" ] ) return IPHONE_3G_NAMESTRING; if ([isEqualToString plate-forme: @ "iPhone1, 2"]) IPHONE_3G_NAMESTRING retour;
  27. platform isEqualToString : @ "iPhone2,1" ] ) return IPHONE_3GS_NAMESTRING; if ([isEqualToString plate-forme: @ "iPhone2, 1"]) IPHONE_3GS_NAMESTRING retour;
  28. platform isEqualToString : @ "iPod1,1" ] ) return IPOD_1G_NAMESTRING; if ([isEqualToString plate-forme: @ "iPod1, 1"]) IPOD_1G_NAMESTRING retour;
  29. platform isEqualToString : @ "iPod2,1" ] ) return IPOD_2G_NAMESTRING; if ([isEqualToString plate-forme: @ "iPod2, 1"]) IPOD_2G_NAMESTRING retour;
  30. return NULL;
  31. )
  32. @ End

Dans nos délégués pouvez entrer:

Objective-C:
  1. # Import "UIDevice-hardware.h"
  2. / /
  3. ) checkDeviceTypeAndCapabilities { - (Void) (checkDeviceTypeAndCapabilities
  4. , [ [ UIDevice currentDevice ] platform ] ) ; NSLog (@ "type:% @", [[currentDevice UIDevice] Plate-forme]);
  5. , [ [ UIDevice currentDevice ] platformString ] ) ; NSLog (@ "type:% @", [[currentDevice UIDevice] platformString]);
  6. )

8. Chambre

Lorsque vous écrivez une application qui utilise l'accès aux fonctions de la Chambre est bon de vérifier que le périphérique "" supporte de tels aménagements (tels que les directives d'Apple):

Objective-C:
  1. UIImagePickerController * imgPicker;
  2. / / ...
  3. UIImagePickerController isSourceTypeAvailable : UIImagePickerControllerSourceTypeCamera ] ) ) { if (([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera])) (
  4. self.imgPicker.sourceType = UIImagePickerControllerSourceTypeCamera;
  5. self.imgPicker animated : YES ] ; [PresentModalViewController Self: self.imgPicker animé: YES];
  6. )

9. Album photo & Photo Library

L'instar de ce qui se passe avec la Chambre, il devrait simplement faire les contrôles, même si vous accédez à la bibliothèque d'images:

Objective-C:
  1. UIImagePickerController * imgPicker;
  2. / / ...
  3. UIImagePickerController isSourceTypeAvailable : UIImagePickerControllerSourceTypeSavedPhotosAlbum ] ) ) { if (([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeSavedPhotosAlbum])) (
  4. self.imgPicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
  5. self.imgPicker animated : YES ] ; [PresentModalViewController Self: self.imgPicker animé: YES];
  6. )
  7. / / Ou ...
  8. UIImagePickerController isSourceTypeAvailable : UIImagePickerControllerSourceTypePhotoLibrary ] ) ) { if (([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypePhotoLibrary])) (
  9. = self.imgPicker.sourceType UIImagePickerControllerSourceTypePhotoLibrary;
  10. self.imgPicker animated : YES ] ; [PresentModalViewController Self: self.imgPicker animé: YES];
  11. )

10. La disponibilité et le type de réseau

Heureusement, Apple a écrit une classe pour nous de déterminer l'état du réseau. Ceci peut être utilisé dans notre application est de vérifier la présence de la topologie de réseau: Ethernet ou WiFi. Télécharger Reachability.h et Reachability.m. Ajoutez le SystemConfiguration.framework Maintenant, vous pouvez écrire une fonction comme ceci:

Objective-C:
  1. / / Dans votre délégué. H
  2. @ Reachability classe;
  3. / /
  4. / / Dans le délégué. M
  5. # Import "Reachability.h"
  6. / / Verify Réseau et couverture
  7. ) CheckNetworkStatus { - (BOOL) (CheckNetworkStatus
  8. Reachability reachabilityForInternetConnection ] retain ] != NotReachable ) ; ([retour [Reachability reachabilityForInternetConnection] retain]! = NotReachable);
  9. )

Méfiez-vous que le code que Apple, dont la source complet est disponible en Reachability.zip, est pour le SDK 3.1.2. Si vous essayez à remplir pour SDK 2.2.1 vous avez besoin de faire des commentaires sur certaines parties du code qui ne sont pas supportés par le "vieux" (même si encore présents) SDK, tels que les définissent:

Objective-C:
  1. kSCNetworkReachabilityFlagsConnectionOnTraffic
  2. kSCNetworkReachabilityFlagsConnectionOnDemand

et la partie du code (commentaires):

Objective-C:
  1. / / If ((((flags & kSCNetworkReachabilityFlagsConnectionOnDemand)! = 0) | |
  2. / / (Flags & kSCNetworkReachabilityFlagsConnectionOnTraffic)! = 0))
  3. / / (
  4. / / / / ... et la connexion est à la demande (ou à la circulation) si le
  5. / / / / Application appelante est l'aide des API ou supérieur CFSocketStream
  6. / /
  7. / / If ((flags & kSCNetworkReachabilityFlagsInterventionRequired) == 0)
  8. / / (
  9. / / / / ... et aucun utilisateur [] intervention est nécessaire
  10. / / RetVal = ReachableViaWiFi;
  11. / /)
  12. / /)

Related Post

Cet article était utile?: Per nientePocoAbbastanzaMoltoMoltissimo
Loading ... Chargement ...

Il n'ya pas de commentaires pour cet article

Laissez un commentaire

TAG PERMISSIONS XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> INSERTION CODE:
 <pre></pre>         // blocco generico [code][/code]       // blocco generico [as][/as]           // Actionscript [css][/css]         // CSS Style Sheet [html][/html]       // HTML [js][/js]           // Javascript [objc][/objc]       // Objective-C [php][/php]         // PHP [sql][/sql]         // SQL