10 nützliche Tipps und Snippets für Apple iPhone und Xcode
Donnerstag, 12. November 20091. Strings auf mehrere Zeilen
In Xcode können Sie "Pause" ein String über mehrere Zeilen, indem Sie am Ende einen umgekehrten Schrägstrich. Diese Funktion kann nützlich sein, wenn, zum Beispiel, wir wollen HTML-Text in ein Steuerelement einfügen UIWebView
- <html> <head> \
- <style type= \" text/css \"> \
- Körper (background: # 000; color: # fff) \
- </ Style> \
- <title> Report </ title> </ head> \
- <body> \
- <h1> HTML Test </ h1> \
- <ul> \
- <li> Text HTML </ li> \
- Geschrieben am <li> </ li> \
- <li> mehr "Zeilen </ li> \
- </ Ul> </ body> </ html> ";
2. Transitions Profil mit Wirkung "gefaltetes Papier"
Hier ist eine nützliche Funktion zum Durchsuchen und risflogliare zwei UIView
- / / Führen Sie einen Übergangseffekt aus einer CURL UIView ein UIView
- / / @ Params Platzhalter (UIView) main
- / / @ Params fview (UIView) Preis
- / / @ Params TView (UIView) Ankunft
- / / @ Params vor (BOOL) Zug nach oben oder unten
- ) makeTansitionFromView : ( UIWindow * ) placeholder fromView : ( UIView * ) fview toView : ( UIView * ) tview forward : ( BOOL ) forward { - (Void) makeTansitionFromView: (UIWindow *) Platzhalter fromView: (UIView *) fview toView: (UIView *) TView vorn: (BOOL) vor (
- nil context : NULL ] ; [UIView beginAnimations: nil context: NULL];
- 1.5 ] ; [UIView setAnimationDuration: 1,5];
- forward?UIViewAnimationTransitionCurlUp : UIViewAnimationTransitionCurlDown forView : placeholder cache : YES ] ; [UIView setAnimationTransition: vorwärts? UIViewAnimationTransitionCurlUp: UIViewAnimationTransitionCurlDown forView: Platzhalter cache: YES];
- ; [TView removeFromSuperview];
- fview ] ; [Platzhalter addSubview: fview];
- ; [Fview removeFromSuperview];
- tview ] ; [Platzhalter addSubview: TView];
- ; [UIView commitAnimations];
- )
Kann auf diese Weise verwendet werden:
- / / Display - Leute Forward
- window fromView : primaView.view toView : secondaView.view forward : YES ] ; [Self makeTansitionFromView: Fenster fromView: primaView.view toView: secondaView.view uns: JA];
- / / Hide - rückwärts
- window fromView : secondaView.view toView : primaView.view forward : NO ] ; [Self makeTansitionFromView: Fenster fromView: secondaView.view toView: primaView.view vorn: NO];
3. Verhindern Auto-Dimm-Display
Um mit Vorsicht verwendet werden, unter Androhung der sofortigen Verbrauch der Batterie ermöglicht diese Codezeile, die Sie dafür, dass unsere Anwendung immer sichtbar, verhindert das Apple iPhone geht in "Stand-by":
- .idleTimerDisabled = YES ; [UIApplication sharedApplication]. IdleTimerDisabled = YES;
4. Network Activity Indicator
Die Animation, die auf der Statusleiste wird am oberen Rand des Bildschirms des Apple iPhone, kann auch in unserer Anwendung genutzt werden, um Netzwerk-Aktivität hervorzuheben:
- / / Show Network Activity Indicator ...
- .networkActivityIndicatorVisible = YES ; [UIApplication sharedApplication]. NetworkActivityIndicatorVisible = YES;
- / / Your Operationen ...
- / / Hide Network Activity Indicator ...
- .networkActivityIndicatorVisible = NO ; [UIApplication sharedApplication]. NetworkActivityIndicatorVisible = NO;
5. Personal Activity Indicator
Wenn Sie nicht in der Statusleiste haben, kann nützlich sein, um zu zeigen, unsere Activity Indicator:
- / / Global irgendwo an ... dipo ein Delegierter (. h)
- UIActivityIndicatorView * Tätigkeit;
- / / In loadView oder viewDidLoad Initialisierung des Activity Indicator
- initWithActivityIndicatorStyle : UIActivityIndicatorViewStyleWhite ] ; Aktivität = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle: UIActivityIndicatorViewStyleWhite];
- activity ] ; [Self.view addSubview: Aktivität];
- CGPointMake ( 160, 240 ) ] ; [Activity setCenter: CGPointMake (160, 240)];
- ; [StopAnimating Tätigkeit];
- / / Wenn wir brauchen
- ) someMethod { - (Void) (someMethod
- ; [StartAnimating Tätigkeit];
- / / Bis zu tun ...
- ; [StopAnimating Tätigkeit];
- )
6. Standort
Mit diesem Snippet kann man verstehen, "Sprache", und setzen unser Gerät:
- / / Frei von Sprache und Lokalisierung
- defaults = [ NSUserDefaults standardUserDefaults ] ; NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
- languages = [ defaults objectForKey : @ "AppleLanguages" ] ; NSArray * Sprachen = [defaults objectForKey: @ "AppleLanguages"];
- currentLanguage = [ languages objectAtIndex : 0 ] ; NSString currentLanguage * = [Sprachen objectAtIndex: 0];
- , [ [ NSLocale currentLocale ] localeIdentifier ] ) ; NSLog (@ "Current Locale:% @", [[NSLocale currentLocale] LocaleIdentifier]);
- , currentLanguage ) ; NSLog (@ "Aktuelle Sprache:% @", currentLanguage);
7. iPhone oder iPod?
Diese Klasse ist sinnvoll, um festzustellen, welches Gerät Apple arbeitet an unserer Applikation. Wir können nicht nur das Modell zu bestimmen (iPhone oder iPod Touch), sondern auch die Version. Erstellen Sie zwei Dateien UIDevice-hardware.h und UIDevice-hardware.m
- / / UIDevice-hardware.h
- # Import <UIKit/UIKit.h>
- # Define IPHONE_1G_NAMESTRING @ "iPhone 1G"
- # Define IPHONE_3G_NAMESTRING @ "iPhone 3G"
- # Define IPHONE_3GS_NAMESTRING @ "iPhone 3GS"
- # Define IPOD_1G_NAMESTRING @ "iPod touch 1G"
- # Define IPOD_2G_NAMESTRING @ "iPod touch 2G"
- Hardware ) @ UIDevice Schnittstelle (Hardware)
- * ) platform; - (NSString *)-Plattform;
- * ) platformString; - (NSString *) platformString;
- @ End
- / / UIDevice-hardware.m
- # Import "UIDevice-hardware.h"
- # Include <sys/types.h>
- # Include <sys/sysctl.h>
- Hardware ) @ Umsetzung UIDevice (Hardware)
- / *
- Plattformen
- iPhone1, 1 = iPhone 1G
- iPhone1, 2 = iPhone 3G
- iPhone2, 1 = iPhone 3GS
- iPod1, 1 = iPod touch 1G
- iPod2, 1 = iPod touch 2G
- * /
- size_t size;
- , NULL , & size, NULL , 0 ) ; sysctlbyname (hw.machine ", NULL, & size, NULL, 0);
- , machine, & size, NULL , 0 ) ; ysctlbyname (hw.machine ", Maschinen-, & size, NULL, 0);
- return-Plattform;
- )
- * ) platformString { - (NSString *) (platformString
- platform isEqualToString : @ "iPhone1,1" ] ) return IPHONE_1G_NAMESTRING; if ([Plattform isEqualToString: @ "iPhone1, 1"]) return IPHONE_1G_NAMESTRING;
- platform isEqualToString : @ "iPhone1,2" ] ) return IPHONE_3G_NAMESTRING; if ([Plattform isEqualToString: @ "iPhone1, 2"]) return IPHONE_3G_NAMESTRING;
- platform isEqualToString : @ "iPhone2,1" ] ) return IPHONE_3GS_NAMESTRING; if ([Plattform isEqualToString: @ "iPhone2, 1"]) return IPHONE_3GS_NAMESTRING;
- platform isEqualToString : @ "iPod1,1" ] ) return IPOD_1G_NAMESTRING; if ([Plattform isEqualToString: @ "iPod1, 1"]) return IPOD_1G_NAMESTRING;
- platform isEqualToString : @ "iPod2,1" ] ) return IPOD_2G_NAMESTRING; if ([Plattform isEqualToString: @ "iPod2, 1"]) return IPOD_2G_NAMESTRING;
- return NULL;
- )
- @ End
In unserem Delegierten treten kann:
- # Import "UIDevice-hardware.h"
- / /
- ) checkDeviceTypeAndCapabilities { - (Void) (checkDeviceTypeAndCapabilities
- , [ [ UIDevice currentDevice ] platform ] ) ; NSLog (@ "Typ:% @", [[UIDevice currentDevice] Plattform]);
- , [ [ UIDevice currentDevice ] platformString ] ) ; NSLog (@ "Typ:% @", [[UIDevice currentDevice] platformString]);
- )
8. Raum
Wenn Sie eine Anwendung, die Zugriff auf die Funktionen der Kammer verwendet zu schreiben, ist gut zu überprüfen, ob die "device" solche Merkmale (z. B. Richtlinien von Apple) unterstützt:
- UIImagePickerController * imgPicker;
- / / ...
- UIImagePickerController isSourceTypeAvailable : UIImagePickerControllerSourceTypeCamera ] ) ) { if (([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera])) (
- self.imgPicker.sourceType = UIImagePickerControllerSourceTypeCamera;
- self.imgPicker animated : YES ] ; [Self presentModalViewController: self.imgPicker animiert: YES];
- )
9. Fotoalbum & Photo Library
Ähnlich wie, was passiert mit der Kammer, sollte es machen nur die Kontrollen, auch wenn Sie Zugriff auf die Bibliothek der Bilder:
- UIImagePickerController * imgPicker;
- / / ...
- UIImagePickerController isSourceTypeAvailable : UIImagePickerControllerSourceTypeSavedPhotosAlbum ] ) ) { if (([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeSavedPhotosAlbum])) (
- self.imgPicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
- self.imgPicker animated : YES ] ; [Self presentModalViewController: self.imgPicker animiert: YES];
- )
- / / Oder ...
- UIImagePickerController isSourceTypeAvailable : UIImagePickerControllerSourceTypePhotoLibrary ] ) ) { if (([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypePhotoLibrary])) (
- self.imgPicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
- self.imgPicker animated : YES ] ; [Self presentModalViewController: self.imgPicker animiert: YES];
- )
10. Verfügbarkeit und der Art des Netzes
Glücklicherweise schrieb Apple eine Klasse für uns, um den Status des Netzwerks zu bestimmen. Dies kann in unserer Anwendung verwendet werden, um die Präsenz ihrer Netzwerk-Topologie: Ethernet oder WiFi zu überprüfen. Download Reachability.h und Reachability.m. Fügen Sie das Framework SystemConfiguration.framework Jetzt können Sie eine Funktion schreiben wie folgt aus:
- / / In deiner Delegierter. H
- @ Class Erreichbarkeit;
- / /
- / / In den Delegierten. M
- # Import "Reachability.h"
- / / Stellen Sie sicher, Netzabdeckung
- ) CheckNetworkStatus { - (BOOL) (CheckNetworkStatus
- Reachability reachabilityForInternetConnection ] retain ] != NotReachable ) ; return ([[Erreichbarkeit reachabilityForInternetConnection] behalten]! = NotReachable);
- )
Beachten Sie, dass der Code von Apple, dessen volle Quelle, die in Reachability.zip zur Verfügung, ist für die SDK 3.1.2. Wenn Sie versuchen, für SDK 2.2.1 Sie brauchen, um auf bestimmte Teile des Codes, die nicht von den "alten" (auch wenn noch vorhanden) SDK, wie definieren unterstützt Kommentar ein:
- kSCNetworkReachabilityFlagsConnectionOnTraffic
- kSCNetworkReachabilityFlagsConnectionOnDemand
und der Teil des Codes (Kommentare):
- / / If ((((Flags & kSCNetworkReachabilityFlagsConnectionOnDemand)! = 0) | |
- / / (Flags & kSCNetworkReachabilityFlagsConnectionOnTraffic)! = 0))
- / / (
- / / / / ... und die Verbindung ist auf Nachfrage-(oder-Verkehr), wenn die
- / / / / Der Aufruf Anwendung ist die Verwendung der APIs oder höher CFSocketStream
- / /
- / / If ((flags & kSCNetworkReachabilityFlagsInterventionRequired) == 0)
- / / (
- / / / / ... und keine [user] Intervention ist erforderlich
- / / RetVal = ReachableViaWiFi;
- / /)
- / /)













Es gibt keine Kommentare für diesen Beitrag
Leave a comment