In dieser letzten Periode war ich auf drei Anwendungen für Apple iPhone, nahezu gleichzeitig. Zwei wurden bereits von Apple zugelassen und sind auf dem App Store entfernt: ihrerstes und iMakeLove .
In beiden Anwendungen haben die Verwendung eines Gegenstandes angenommen UIWebView den Anweisungen anzuzeigen.
Das Objekt UIWebView ilevato war wirklich komfortabel in diesem Fall. Es erlaubte mir, um schnell und eine schöne Texte, Bilder, und begleitet, wenn nichts anderes auf einer Webseite (Flash auf dem iPhone nicht im Lieferumfang enthalten) angezeigt wird.

Das Objekt UIWebView ist wirklich vielseitig und braucht nur sehr wenige Einstellungen verwendet werden. Der einzige Mangel ist die Anwesenheit von einem geheimnisvollen Schatten, wenn Sie eine Schriftrolle aus dem Bereich der Kontrolle ist an der Unterseite als an der Spitze zu machen scheint:

Nach einigen Recherchen wurde mir klar, dass dieses Verhalten auf die SDK, vor allem die neuesten Updates ab. Und Apple hat noch keine offizielle Erklärung dazu, wie um es zu entfernen entlassen, im Gegenteil, wies er als Code ist nicht eine Reihe von Hacks, die Verwendung von sensiblen Funktionen zu machen, oder die Dokumentation erlaubt. Schließlich gab ich auf, sowohl in Bezug auf Zeit, und weil die Lösungen schienen alle aus der Box Apple.
Zum Glück habe ich die Lösung habe, hoffe ich, ziemlich regelmäßig, die das Problem (Dank zu lösen scheint, Adolfo ):
1 2 3 4 5 6
| / / WebView ist die Kontrolle UIWebView [ webView.subviews objectAtIndex : 0 ] ; id = scroller [webView.subviews objectAtIndex: 0];
UIView * subView in [ scroller subviews ] ) for (UIView * Subview in [scroller Unteransichten]) subView class ] description ] isEqualToString : @ "UIImageView" ] ) if ([[[Subview Klasse] description] isEqualToString: @ "UIImageView"]) ; subView.hidden = YES; |
Wie durch spitze Adolfo , aber das ist ein Hack, der nicht mehr funktionieren mit zukünftigen Versionen des SDK kann.
Fortsetzung ...
Nach der Erläuterung , wie wir unsere Saiten in Xcode zu finden , ist es einfach, jetzt, wie zu sehen - durch die Anwendung der gleichen Technik - zu lokalisieren und Betrachtung von Bildern / interfaces mit Interface Builder erstellt.
Suchen Sie Graphik-Ressourcen
Der Prozess, wie erwähnt, ist die gleiche, wenn wir ein Bild bereits in unsere Ressourcen enthalten sind, oder sie setzen einen neuen ein, und wir wollen "locate" - das heißt, auf zwei oder mehr Bilder auf Basis der unterstützten Sprachen zu verwalten - klicken Sie einfach auf den Button Bild rechts ( Adium.png in diesem Beispiel), und wählen Sie Get Info:

Make File Localizable wir in der unteren linken Seite klicken.

Wir klicken Sie auf Hinzufügen und fügen Localization Italian :

Um zu erhalten:

esattamente come accadeva con il testo: Unser Bild bewegt wird (physisch, eines der seltenen Male, wenn das passiert nell'alberatura Xcode auf dem Dateisystem wird reflektiert) unter virtuellen Ordnern English.lproj und Italian.lproj genau wie mit dem Text passiert:

contiene una stessa versione dell'immagine. An dieser Stelle jeden der Ordner English.lproj und Italian.lproj enthält die gleiche Version des Bildes. Standardmäßig - - die englische Version Dieses Bild ist in Interface Builder, wo wir sehen, manipuliert.
An diesem Punkt einfach überschreiben einer (oder beide Dateien Adium.png ) zu einem Ort der Bilder "flash" erhalten.
Suchen Sie die Dateien XIB
Auch die Schnittstellen mit Interface Builder gebaut werden können in ihrer Gesamtheit entfernt werden, wenn es für notwendig erachtet wird. ) con interfaccia XIB , lo selezioniamo, scegliamo Get Info dal menu contestuale, rendiamo il file localizzabile, aggiungiamo la localizzazione in italiano: Das Verfahren ist identisch mit dem grafischen Fähigkeiten durchgeführt: Fügen Sie ein ViewController (zB infoViewController ) XIB-Schnittstelle, wählen wir sie, wählen Sie Get Info aus dem Kontextmenü, geben Sie der Datei lokalisierbar, fügen Sie die italienische Lokalisierung:

Klicken Italiano oder Italienisch öffnet Interface Builder! ) all'interno della classica cartella Classes . Dieses Mal das Dateisystem, werden Sie feststellen, dass Sie zwei Verzeichnisse (erstellt English.lproj und Italian.lproj ) innerhalb der klassischen Klassen-Ordner. Beide haben ihre Dateien infoViewController.xib . Der Komfort in diesem, deutlich in den Code behoben, und wann wir unsere Controller-Code instanziieren wir eine "saubere" wie diese haben:
1 2
| [ InfoViewController alloc ] ; InfoViewController * info = [InfoViewController alloc]; info.view ] ; [Self.view addSubview: info.view]; |
Wie Sie sehen können gibt es keine Spur von Aussage über die Lage, völlig vom System verwaltet. Die beiden Schnittstellen, natürlich, können ganz unterschiedlich sein, wie wirksam sind als zwei separate XIB-Datei.
Fortsetzung ...
Selbst in den einfachen Tutorial finden Sie die Verwendung von Protokollen. Es wird sicherlich für viele in Ihrer View-Controller zufällig ein Protokoll verwenden, verteilen, neben der Definition der Schnittstelle, eine Anweisung ähnlich:
1 2 3
| UIViewController <uiwebviewdelegate> { @ Interface myViewController: UIViewController {<uiwebviewdelegate> ... } |
Fortsetzung ...
Ich habe ein ärgerliches Problem auf einem WordPress Blog zu beheben: Die Anwender linken Kommentare mit langen Sätzen. Dies führte zu der Veröffentlichung des Textes, sowohl im Backend, noch schlimmer, im Frontend. Die Wirkung war wirklich schrecklich und Hand-auf jeden einzelnen Kommentar moderate vermeiden, war die einzige Lösung heraus zu filtern - irgendwie - die Ausgabe der Kommentare.
Fortsetzung ...
Vielleicht sollte ich schreiben "Sehr sehr sehr kurze Schnipsel", jedoch ist eine ausgezeichnete und komfortable "Trick" zu zeigen, was ich bin. Ausführen der "zwei" Zeilen Code unten gezeigt, können Sie die Ausgabe eines beliebigen URL und manipulieren.
Fortsetzung ...
jQuery ist bis zur Version 1.4! Neben einigen neuen Features und die "üblichen" rewrite des Codes, alle Unterlagen in einem sehr lesenswerten als zuvor überarbeitet worden. impostato a _blank ! Aber wir sehen das Thema dieses Beitrags; Problem: add, mit jQuery, eine Klasse für alle Tags a Besitz das Attribut target gesetzt, um _blank !
Fortsetzung ...
Die Informationen zu einem Benutzer oder Autor eines WordPress-Blogs können einfach erweitert werden. Dies könnte zum Beispiel sinnvoll sein, das Geburtsdatum, bibliographische Informationen, die Adresse des Arbeitsplatzes oder, sehr komfortabel, ein Lager für spezielle Erlaubnis Einsatz - zu einem späteren Zeitpunkt in der Vorlage zu prüfen.
Der Betrieb wirst du tun, sind weder ein Plugin, aber der Code müssen Sie in der platziert werden - üblich - Datei functions.php .
Fortsetzung ...
Manchmal muss man einfach einen Artikel zu verschieben, verändern die Sicht auf ein Problem zu lösen scheint unüberwindbar. Wenn man mit der Kompatibilität zwischen Browsern und CSS zu tun, zu erfinden Lösungen "spektakulär" hat (Stunts sagen würde) ist auf der Tagesordnung. , per Safari e Google Chrome. Was ich Ihnen eine einfache Möglichkeit, abgerundete Ecken, um Bilder mit gelten -moz-border-radius , die für Mozilla FireFox und -webkit-border-radius , Safari und Google Chrome.
Fortsetzung ...
Führen Sie eine Methode, nach n Sekunden
Die ganze Familie performSelector ist wirklich interessant und kann in einer Vielzahl von Fällen nützlich. Die einfachste und häufigste Anwendung ist wie folgt:
1 2 3 4 5
| @selector ( myMethod ) withObject : nil afterDelay : 3 ] ; [Self performSelector: @ selector (myMethod) withObject: nil afterDelay: 3]; / / void ) myMethod { - (Void) {myMethod "Hello World!" ) ; NSLog (@ "Hallo Welt!"); } |
Sind jedoch der Ansicht, dass der "Timer" ist nicht korrekt. Dieses Verfahren sollte daher verwendet werden, wenn es eine "erhebliche" zeitliche Präzision erforderlich ist.
Rufen Sie die Version des
1 2
| version = [ [ [ NSBundle mainBundle ] infoDictionary ] objectForKey : @ "CFBundleVersion" ] ; NSString * version = [[[ NSBundle mainBundle] infoDictionary] objectForKey: @ "CFBundleVersion"]; "versione = %@" , version ) ; NSLog (@ "Version =% @", Version); |
JA, wahr oder TRUE?
e TRUE sono in pratica la stessa edentica cosa: Going to Kamm durch die Kernel Apple iPhone können Sie erkennen, dass YES , true , und TRUE grundsätzlich dasselbe Edentia:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| / / Definition von JA # Define YES (BOOL) 1 # Define NO (BOOL) 0
/ / Definition der wahren # Define TRUE 1 # Define false 0
/ / Definition von TRUE # If! Defined (TRUE) # Define TRUE 1 # Endif
# If! Defined (FALSE) # Define FALSE 0 # Endif |
Zumindest für den Moment ...
Vibration
1 2 3
| # Import <AudioToolbox/AudioToolbox.h> / / ; AudioServicesPlaySystemSound (kSystemSoundID_Vibrate); |
CGImageRef Zeiger von einem UIImage
1 2 3 4
| [ UIImage imageNamed : @ "LittleHeart.png" ] ; UIImage * heart = [UIImage imageNamed: @ "LittleHeart.png"]; heart CGImage ] ; CGImageRef image = [CGImage Herz]; / / Das Bild kann nun "gerastert" werden auf einem CGContextRef CGRect ) { 0 , 0 , 100 , 100 } , image ) ; CGContextDrawImage (c, (CGRect) {0, 0, 100, 100}, Bild); |
Animationen
1 2 3 4 5
| nil context : NULL ] ; [UIView beginAnimations: nil context: NULL]; 1.5 ] ; [UIView setAnimationDuration: 1,5]; UIViewAnimationCurveEaseInOut ] ; [UIView setAnimationCurve: UIViewAnimationCurveEaseInOut]; / / ... ; [UIView commitAnimations]; |
NSLog
1 2 3
| "NSString object %@ " , myString ) ; NSLog (@ "NSString Objekt% @", myString); "Float: %f " , myFloat ) ; NSLog (@ "float:% f", myFloat); "Integer: %i " , myInt ) ; NSLog (@ "Integer:% i", myInt); |
RGB-Wandler UIColor
1
| # Define RGBA (r, g, b, a) [UIColor colorWithRed: r/255.0 grün: blau g/255.0: b/255.0 alpha: a] |
Parameter an eine NSTimer
Unter Ausnutzung der Parameter userInfo können Sie einen Zeiger auf ein Objekt, um unsere Methode durch den Timer aufgerufen senden.
1 2 3 4 5 6 7 8 9 10 11 12 13
| scheduledTimerWithTimeInterval : 1 target : self selector : @selector ( timerMethod ) userInfo : objectPointer repeats : YES ] ; [ NSTimer scheduledTimerWithTimeInterval: 1 Ziel: self selector: @ selector (timerMethod) userInfo: objectPointer wiederholt: YES]; / / ... void ) timerMethod : ( NSTimer * ) timer { - (Void) timerMethod: ( NSTimer *) Timer { / / Hole den Zeiger auf mein Objekt timer userInfo ] ; objectPointer = [Timer userInfo]; / / Oder myMethod ] ; [[Timer userInfo] myMethod]; [ [ timer userInfo ] myProperty ] ; int a = [[Timer userInfo] myProperty]; / / Welche ist die gleiche [ objectPointer myProperty ] ; int a = [objectPointer myProperty]; } |
Laufzeit
Hier ist eine einfache Möglichkeit, eine kurze Zeit benötigt, um die Geschwindigkeit der Ausführung des Codes zu überprüfen, berechnet:
1 2 3 4
| ; CFAbsoluteTime initialTime CFAbsoluteTimeGetCurrent = (); / / ... Frack ; CFAbsoluteTime finalTime CFAbsoluteTimeGetCurrent = (); "Tempo trascorso %f" , finalTime - initialTime ) ; NSLog (@ "verstrichene Zeit% f", finalTime - initialTime); |
Fortsetzung ...
Ein wenig "Zeit habe ich berichtet, eine Version des Commodore 64-Emulator in Adobe ActionScript 3.0 geschrieben, jetzt in einer neuen Version :
Fortsetzung ...
Neueste Kommentare
Giovambattista Fazioli : @ Barbara: Wenn Sie meinen, die unten anfangen aufzuschreiben, was es auf dem hängt ...
Barbara : Hallo, ist sehr interessant, aber wie kann man an der Unterseite statt der oben schreiben? Dank
Simon : Es ärgert gestört wieder ein und verwenden, die Platz für diese Dinge ... aber es funktioniert nicht ...
Giovambattista Fazioli : @ Simon: Was könnte darauf zurückzuführen sein, die Syntax, die ich verwendet, die speziell für PHP 5 +,...
Simon : Ich habe versucht gestern Abend, alles in functions.php, okay, jquery Formulare und Tabs jQueryUI ihnen ...