Kategorie "D"


iPhone: Beseitigen Sie die Schatten-Effekt beim Scrollen eine UIWebView

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 .

TheFirst 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.

TheFirst

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:

UIWebView Shadow

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 ...

Wie man Bilder und Ansichten in Interface Builder finden

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:

ViewController

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 ...

Wie Sie Ihr eigenes Protokoll mit delegierten erstellen

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 ...

WordPress: Filter den Inhalt der Kommentare

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 ...

Sehr kurze Auszug: Holen Sie sich die Ausgabe einer URL in Objective-C

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 ...

Wie man eine Gruppe von Tags auswählen, die keine Kinder haben eines bestimmten Typs

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 ...

WordPress: erweiterte User-Informationen

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 ...

Firefox 3.5.7: Wie kann der Mangel der abgerundeten Kanten eines Bildes fixieren

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 ...

10 nützliche Snippets für Apple iPhone

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 ...

Commodore 64 Emulator JavaScript

Ein wenig "Zeit habe ich berichtet, eine Version des Commodore 64-Emulator in Adobe ActionScript 3.0 geschrieben, jetzt in einer neuen Version :

Commodore 64 Emulator in Adobe Flash

Fortsetzung ...