<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Roger Boesch &#187; Code snippet</title>
	<atom:link href="http://www.rogerboesch.com/tag/code-snippet/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rogerboesch.com</link>
	<description>iPhone, iPad und iPod Touch</description>
	<lastBuildDate>Thu, 01 Apr 2010 20:04:49 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>iPhone Simulator und ABAdressBook</title>
		<link>http://www.rogerboesch.com/2010/03/17/iphone-simulator-und-abadressbook/</link>
		<comments>http://www.rogerboesch.com/2010/03/17/iphone-simulator-und-abadressbook/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 09:11:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPhone/iPad Programming]]></category>
		<category><![CDATA[AdressBook]]></category>
		<category><![CDATA[Code snippet]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Tip of the week]]></category>

		<guid isPermaLink="false">http://www.rogerboesch.com/?p=930</guid>
		<description><![CDATA[Die Integration des Adressbuchs in eigene Apps ist eine schöne Sache. Während der Entwicklung im Simulator stellt sich leider meistens heraus, dass das Adressbuch entweder ganz leer ist oder sich nur wenige Datensätze darin befinden. Hat man im Simulator einmal auf Reset gedrückt sind die Daten meistens ganz weg. Was liegt also näher, als die [...]]]></description>
			<content:encoded><![CDATA[<p>Die Integration des Adressbuchs in eigene Apps ist eine schöne Sache. Während der Entwicklung im Simulator stellt sich leider meistens heraus, dass das Adressbuch entweder ganz leer ist oder sich nur wenige Datensätze darin befinden. Hat man im Simulator einmal auf Reset gedrückt sind die Daten meistens ganz weg. Was liegt also näher, als die Daten des Adressbuchs vom eigenen iPhone auch für die Tests im Simulator zu nutzen, was gar nicht mal so kompliziert ist. Die nachfolgenden Schritte zeigen wie&#8217;s geht:</p>
<p>Wichtig ist natürlich, dass sich auf dem Mac auf dem die nachfolgenden Commands ausgeführt werden, auch wirklich ein Backup befindet&#8230;</p>
<ol>
<li><a href="http://www.rogerboesch.com/wp-content/uploads/2010/03/createdb.zip">Zip file</a> downloaden und im Home Verzeichnis entpacken</li>
<li>Terminal App öffnen</li>
<li>Setzen der Dateiattribute: <em>chmod u=x createdb</em></li>
<li>Ausfuhren der Datei mit: <em>./createdb</em></li>
<li>Fertig!</li>
</ol>
<p><strong>Anmerkung</strong>: Je nach SDK kann es jetzt noch sein, dass man im Finder die Datei <em>/Users/admin/Library/Application Support/iPhone Simulator/User/Library/AddressBook/AddressBook.sqlitedb</em> auch noch in die anderen Verzeichnisse (also z.B. <em>/Users/admin/Library/Application Support/iPhone  Simulator/3.1.3/Library/AddressBook/AddressBook.sqlitedb</em>) kopieren muss, was aber wieder im Finder geschehen kann.</p>
<h6><em>Btw.: Das Script habe ich übrigens nicht ganz selber geschrieben, sondern vor einiger Zeit mal irgendwo gefunden und angepasst. Wenn ich den Link wieder finde füge ich ihn noch an.</em></h6>
]]></content:encoded>
			<wfw:commentRss>http://www.rogerboesch.com/2010/03/17/iphone-simulator-und-abadressbook/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Objective-C</title>
		<link>http://www.rogerboesch.com/2009/08/01/objective-c/</link>
		<comments>http://www.rogerboesch.com/2009/08/01/objective-c/#comments</comments>
		<pubDate>Sat, 01 Aug 2009 06:45:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPhone/iPad Programming]]></category>
		<category><![CDATA[Code snippet]]></category>
		<category><![CDATA[Objective-C]]></category>

		<guid isPermaLink="false">http://www.rogerboesch.com/?p=538</guid>
		<description><![CDATA[Aufbauend auf den beiden ersten, ganz einfachen &#8220;Hello World&#8217;s&#8221; möchte ich nun ein wenig näher auf die Programmiersprache Objective-C eingehen. Das Schwergewicht werde ich dabei auf die Punkte legen, die für den Einstieg und das bessere Verständnis unbedingt notwendig sind. Die Notation verwirrt anfangs zwar ein wenig, wer sich jedoch damit beschäftigt und auf die [...]]]></description>
			<content:encoded><![CDATA[<p>Aufbauend auf den beiden ersten, ganz einfachen &#8220;Hello World&#8217;s&#8221; möchte ich nun ein wenig näher auf die Programmiersprache Objective-C eingehen. Das Schwergewicht werde ich dabei auf die Punkte legen, die für den Einstieg und das bessere Verständnis unbedingt notwendig sind. Die Notation verwirrt anfangs zwar ein wenig, wer sich jedoch damit beschäftigt und auf die Sprache einlässt, wird schnell merken wie leistungsfähig das Ganze ist. Insbesondere im Zusammenspiel mit dem dahinterstehenden Framework des iPhones: Cocoa Touch.</p>
<p>Wichtigstes Element: Die <strong>Klasse</strong></p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #a61390;">@interface</span> Person <span style="color: #002200;">:</span> <span style="color: #400080;">NSObject</span> <span style="color: #002200;">&#123;</span>
     <span style="color: #11740a; font-style: italic;">// Das sind Instanz Variablen</span>
     <span style="color: #a61390;">int</span> alter;  <span style="color: #11740a; font-style: italic;">// ... vom Typ int</span>
     <span style="color: #400080;">NSString</span><span style="color: #002200;">*</span> name;  <span style="color: #11740a; font-style: italic;">// ...vom Typ NSString (Klasse)</span>
     <span style="color: #400080;">NSString</span><span style="color: #002200;">*</span> vorname;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #11740a; font-style: italic;">// Das sind Messages:</span>
<span style="color: #11740a; font-style: italic;">// In Objective-C heissen Methoden Messages</span>
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>initialisieren;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>setAlter<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">int</span><span style="color: #002200;">&#41;</span>alter;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>setPerson<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #400080;">NSString</span><span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>name vorname<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #400080;">NSString</span><span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>vorname;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">int</span><span style="color: #002200;">&#41;</span>getJahrgang;
&nbsp;
<span style="color: #a61390;">@end</span>
&nbsp;
<span style="color: #a61390;">@implementation</span> Person
&nbsp;
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>setAlter<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">int</span><span style="color: #002200;">&#41;</span>alter <span style="color: #002200;">&#123;</span>
    <span style="color: #11740a; font-style: italic;">// Mach irgendetwas ...</span>
<span style="color: #002200;">&#125;</span>
&nbsp;
...
&nbsp;
<span style="color: #a61390;">@end</span></pre></div></div>

<p>Darin unterscheidet sich die Sprache noch nicht wesentlich von vielen Anderen, wie z.B. Java oder C#. Wie in C++ trennt man allerdings Klassen in deren Beschreibung (<em>@interface</em>) und deren Implementierung (<em>@implementation</em>).</p>
<p>Universeller Zugriff auf Klassen: <strong>id</strong><br />
Der Datentyp <em>id</em> ist eine einfache, aber wichtige Erweiterung in Objective-C. Um Klassen unabhägig vom Typ (Bsp. Person) ansprechen zu können, genügt es diese mit id zu deklarieren. Dies wird insbesondere bei der Kommunikation zwischen Interface Builder und Code (Messaging) intensiv genutzt.</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #a61390;">id</span> person <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>Person new<span style="color: #002200;">&#93;</span>;</pre></div></div>

<p>Der Aufruf von Klassen: <strong>Messages</strong><br />
Ein wenig ungewohnt sieht das Ganze aus, wenn man eine Nachricht (Message) einer Klasse aufrufen möchte. Obige Klasse wird beispielsweise wie folgt angesprochen:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;">Person<span style="color: #002200;">*</span> person <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>Person new<span style="color: #002200;">&#93;</span>;
<span style="color: #002200;">&#91;</span>person initialisieren<span style="color: #002200;">&#93;</span>;</pre></div></div>

<p>und mit Parametern:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;">Person<span style="color: #002200;">*</span> person <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>Person new<span style="color: #002200;">&#93;</span>;
<span style="color: #002200;">&#91;</span>person setAlter<span style="color: #002200;">:</span><span style="color: #2400d9;">35</span><span style="color: #002200;">&#93;</span>;
<span style="color: #002200;">&#91;</span>person setPerson<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Muster&quot;</span> vorname<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Peter&quot;</span><span style="color: #002200;">&#93;</span>;</pre></div></div>

<p>Vereinfachung durch <strong>Properties</strong> (@property)<br />
Properties gibt es seit Version 2.0 von Objective-C und erweitern Klassen um die Möglichkeit, einfacher auf Instanz Variablen zuzugreifen. Eine Fähigkeit, die es eigentlich in allen modernen objektorientieren Sprachen gibt. Damit kann der Codeumfang stark reduziert werden, da der Compiler selber das mühsame Schreiben der Getter und Setter Methoden übernimmt:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #a61390;">@interface</span> Person <span style="color: #002200;">:</span> <span style="color: #400080;">NSObject</span> <span style="color: #002200;">&#123;</span>
     <span style="color: #a61390;">int</span> alter;
     <span style="color: #400080;">NSString</span><span style="color: #002200;">*</span> name;
     <span style="color: #400080;">NSString</span><span style="color: #002200;">*</span> vorname;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #a61390;">@property</span> <span style="color: #a61390;">int</span> alter;
<span style="color: #a61390;">@property</span> <span style="color: #002200;">&#40;</span>nonatomic, retain<span style="color: #002200;">&#41;</span> <span style="color: #400080;">NSString</span><span style="color: #002200;">*</span> name;
<span style="color: #a61390;">@property</span> <span style="color: #002200;">&#40;</span>nonatomic, retain<span style="color: #002200;">&#41;</span> <span style="color: #400080;">NSString</span><span style="color: #002200;">*</span> vorname;
&nbsp;
<span style="color: #a61390;">@end</span>
&nbsp;
<span style="color: #a61390;">@implementation</span> Person
&nbsp;
<span style="color: #a61390;">@synthesize</span> alter;
<span style="color: #a61390;">@synthesize</span> name;
<span style="color: #a61390;">@synthesize</span> vorname;</pre></div></div>

<p>Wobei die Vereinfachung genaugenommen erst beim Aufruf zum Tragen kommt, da nun folgendermassen auf die Instanz Variablen des Objekts zugegriffen werden kann:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;">Person<span style="color: #002200;">*</span> person <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>Person new<span style="color: #002200;">&#93;</span>;
person.alter <span style="color: #002200;">=</span> <span style="color: #2400d9;">35</span>;
person.name <span style="color: #002200;">=</span> <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Muster&quot;</span>;
person.vorname <span style="color: #002200;">=</span> <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Peter&quot;</span>;
<span style="color: #a61390;">int</span> jahrgang <span style="color: #002200;">=</span> <span style="color: #2400d9;">2009</span><span style="color: #002200;">-</span>person.alter;</pre></div></div>

<p>Die sieht natürlich vorallem für Entwickler, die von Java oder C# her kommen, sehr viel gewohnter aus und bietet zudem einige Vorteile bei der Speicherverwaltung. Wer sich noch näher mit Properties beschäftigen möchte, der findet auf den Apple Seiten alles Wichtige dazu, auch was es mit dem Keyword <em>@synthesize</em> und den Attributen <em>nonatomic</em> und <em>retain</em> auf sich hat.</p>
<p>There&#8217;s one more thing: <strong>IBOutlet</strong> und <strong>IBAction</strong><br />
Die beiden Keywords IBOutlet und IBAction gehören genaugenommen nicht zu Objective-C und dienen dazu, den Code für den Interface Builder zu markieren. So kann dieser erkennen, welche Message durch welches UI Element (Bsp. Button) aufgerufen werden soll (Action Target Prinzip) und welche Instanz Variable mit welchem UI Element (Bsp. Label) verknüpft wird. Die Anwendung ist dabei ganz einfach:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #a61390;">@interface</span> Person <span style="color: #002200;">:</span> <span style="color: #400080;">NSObject</span> <span style="color: #002200;">&#123;</span>
     UILabel<span style="color: #002200;">*</span> text;
<span style="color: #002200;">&#125;</span>
&nbsp;
<span style="color: #11740a; font-style: italic;">// Dieses Textfeld kann in Interface Builder verknüpft werden</span>
<span style="color: #a61390;">@property</span> <span style="color: #002200;">&#40;</span>nonatomic, retain<span style="color: #002200;">&#41;</span> IBOutlet UILabel<span style="color: #002200;">*</span> text;
&nbsp;
<span style="color: #11740a; font-style: italic;">// Diese Message kann von Interface Builder aufgerufen werden</span>
<span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span>IBAction<span style="color: #002200;">&#41;</span>aendereText<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">id</span><span style="color: #002200;">&#41;</span>sender;
&nbsp;
<span style="color: #a61390;">@end</span></pre></div></div>

<p>So, das soll es nun aber für den Moment auch schon sein, obwohl die Sprache natürlich noch viel mehr zu bieten hat. Für den Einstieg und erste einfache Programme genügt dies aber bereits udn wir werden dies in den kommenden Screencasts auch intensiv nutzen.<br />
Also, nur Mut! Der Einstieg ist ein wenig ungewohnt, aber man findet sich schnell zurecht und Spass macht es sowieso.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rogerboesch.com/2009/08/01/objective-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Screenshot programmieren</title>
		<link>http://www.rogerboesch.com/2009/07/28/screenshot-programmieren/</link>
		<comments>http://www.rogerboesch.com/2009/07/28/screenshot-programmieren/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 10:28:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPhone/iPad Programming]]></category>
		<category><![CDATA[Code snippet]]></category>

		<guid isPermaLink="false">http://www.rogerboesch.com/?p=527</guid>
		<description><![CDATA[Manchmal ist es nützlich, Screenshots zu machen. Jeder iPhone User kennt diese nützliche Tasten Kombination.
Mit den folgenden Programzeilen, ist dies auch sehr einfach in eigenen Programmen integrierbar.
Diese Zeilen einfach in einen View Controller einbauen und fertig:

1
2
3
4
5
6
7
-&#40;IBAction&#41;captureScreen:&#40;id&#41;sender &#123;
	UIGraphicsBeginImageContext&#40;self.view.frame.size&#41;;
	&#91;self.view.layer renderInContext:UIGraphicsGetCurrentContext&#40;&#41;&#93;;
	UIImage* viewImage = UIGraphicsGetImageFromCurrentImageContext&#40;&#41;;
	UIGraphicsEndImageContext&#40;&#41;;
	UIImageWriteToSavedPhotosAlbum&#40;viewImage, nil, nil, nil&#41;;
&#125;

]]></description>
			<content:encoded><![CDATA[<p>Manchmal ist es nützlich, Screenshots zu machen. Jeder iPhone User kennt diese nützliche Tasten Kombination.<br />
Mit den folgenden Programzeilen, ist dies auch sehr einfach in eigenen Programmen integrierbar.<br />
Diese Zeilen einfach in einen View Controller einbauen und fertig:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">-</span><span style="color: #002200;">&#40;</span>IBAction<span style="color: #002200;">&#41;</span>captureScreen<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">id</span><span style="color: #002200;">&#41;</span>sender <span style="color: #002200;">&#123;</span>
	UIGraphicsBeginImageContext<span style="color: #002200;">&#40;</span>self.view.frame.size<span style="color: #002200;">&#41;</span>;
	<span style="color: #002200;">&#91;</span>self.view.layer renderInContext<span style="color: #002200;">:</span>UIGraphicsGetCurrentContext<span style="color: #002200;">&#40;</span><span style="color: #002200;">&#41;</span><span style="color: #002200;">&#93;</span>;
	UIImage<span style="color: #002200;">*</span> viewImage <span style="color: #002200;">=</span> UIGraphicsGetImageFromCurrentImageContext<span style="color: #002200;">&#40;</span><span style="color: #002200;">&#41;</span>;
	UIGraphicsEndImageContext<span style="color: #002200;">&#40;</span><span style="color: #002200;">&#41;</span>;
	UIImageWriteToSavedPhotosAlbum<span style="color: #002200;">&#40;</span>viewImage, <span style="color: #a61390;">nil</span>, <span style="color: #a61390;">nil</span>, <span style="color: #a61390;">nil</span><span style="color: #002200;">&#41;</span>;
<span style="color: #002200;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.rogerboesch.com/2009/07/28/screenshot-programmieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wie ging das nochmal&#8230;?</title>
		<link>http://www.rogerboesch.com/2009/02/27/124/</link>
		<comments>http://www.rogerboesch.com/2009/02/27/124/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 12:50:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPhone/iPad Programming]]></category>
		<category><![CDATA[Code snippet]]></category>
		<category><![CDATA[Tip of the week]]></category>

		<guid isPermaLink="false">http://www.rogerboesch.com/?p=124</guid>
		<description><![CDATA[Meistens sind es ja die kleinen Dinge, die einem beim Programmieren des iPhone viel Zeit kosten&#8230;
Sei es, weil man nicht genau weiss, wie etwas Bestimmtes genau funktioniert oder weil man die Nadel im Heuhaufen (sprich Dokumentation) einfach nicht findet. Hier deshalb zwei kleinere Tip&#8217;s, nach denen man sonst gerne mal durchaus länger suchen muss:
Autoration ist [...]]]></description>
			<content:encoded><![CDATA[<p>Meistens sind es ja die kleinen Dinge, die einem beim Programmieren des iPhone viel Zeit kosten&#8230;</p>
<p>Sei es, weil man nicht genau weiss, wie etwas Bestimmtes genau funktioniert oder weil man die Nadel im Heuhaufen (sprich Dokumentation) einfach nicht findet. Hier deshalb zwei kleinere Tip&#8217;s, nach denen man sonst gerne mal durchaus länger suchen muss:<br />
Autoration ist ein nettes Feature auf dem iPhone und sieht Klasse aus. Damit das auch funktioniert, wenn man selber Webseiten einbinden möchte, muss sich im HTML File folgendes META Tag befinden:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">meta name = &quot;viewport&quot; content = &quot;width = device-width&quot;</pre></td></tr></table></div>

<p>Beim zweiten Tip geht es um den Navigation Controller. Ich sehe immer wieder in vielen Beispielen, die kuriosesten Versuche, selber den Zurück Button zu gestalten. Dabei geht&#8217;s mit der folgende Zeile fast wie von selbst:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">&#91;</span>self.navigationItem setBackBarButtonItem<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>UIBarButtonItem alloc<span style="color: #002200;">&#93;</span> initWithTitle<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Zurück&quot;</span> style<span style="color: #002200;">:</span>UIBarButtonItemStylePlain target<span style="color: #002200;">:</span><span style="color: #a61390;">nil</span> action<span style="color: #002200;">:</span><span style="color: #a61390;">nil</span><span style="color: #002200;">&#93;</span><span style="color: #002200;">&#93;</span>;</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.rogerboesch.com/2009/02/27/124/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Accelerator programmieren</title>
		<link>http://www.rogerboesch.com/2008/12/19/accelerator-programmieren/</link>
		<comments>http://www.rogerboesch.com/2008/12/19/accelerator-programmieren/#comments</comments>
		<pubDate>Fri, 19 Dec 2008 22:53:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPhone/iPad Programming]]></category>
		<category><![CDATA[Code snippet]]></category>

		<guid isPermaLink="false">http://www.rogerboesch.com/?p=116</guid>
		<description><![CDATA[Eine der interessanten Möglichkeiten des iPhone ist dessen innovative Bedienung, z.B durch Bewegung. Möchte man beispielsweise durch Schütteln des iPhone eine bestimmte Aktion ausführen, so hilft einem untenstehender Code. Viel Spass beim selber experimitieren!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
- &#40;void&#41; accelerometer:&#40;UIAccelerometer*&#41;accelerometer didAccelerate:&#40;UIAcceleration*&#41;acceleration &#123;
UIAccelerationValue length;
UIAccelerationValue x, y, z;
&#160;
// Use a basic high-pass filter to remove the influence of the gravity
_accelerometer&#91;0&#93; = [...]]]></description>
			<content:encoded><![CDATA[<p>Eine der interessanten Möglichkeiten des iPhone ist dessen innovative Bedienung, z.B durch Bewegung. Möchte man beispielsweise durch Schütteln des iPhone eine bestimmte Aktion ausführen, so hilft einem untenstehender Code. Viel Spass beim selber experimitieren!</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</pre></td><td class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span> accelerometer<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIAccelerometer<span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>accelerometer didAccelerate<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIAcceleration<span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>acceleration <span style="color: #002200;">&#123;</span>
UIAccelerationValue length;
UIAccelerationValue x, y, z;
&nbsp;
<span style="color: #11740a; font-style: italic;">// Use a basic high-pass filter to remove the influence of the gravity</span>
_accelerometer<span style="color: #002200;">&#91;</span><span style="color: #2400d9;">0</span><span style="color: #002200;">&#93;</span> <span style="color: #002200;">=</span> acceleration.x <span style="color: #002200;">*</span> kFilteringFactor <span style="color: #002200;">+</span> _accelerometer<span style="color: #002200;">&#91;</span><span style="color: #2400d9;">0</span><span style="color: #002200;">&#93;</span> <span style="color: #002200;">*</span> <span style="color: #002200;">&#40;</span><span style="color: #2400d9;">1.0</span> <span style="color: #002200;">-</span> kFilteringFactor<span style="color: #002200;">&#41;</span>;
_accelerometer<span style="color: #002200;">&#91;</span><span style="color: #2400d9;">1</span><span style="color: #002200;">&#93;</span> <span style="color: #002200;">=</span> acceleration.y <span style="color: #002200;">*</span> kFilteringFactor <span style="color: #002200;">+</span> _accelerometer<span style="color: #002200;">&#91;</span><span style="color: #2400d9;">1</span><span style="color: #002200;">&#93;</span> <span style="color: #002200;">*</span> <span style="color: #002200;">&#40;</span><span style="color: #2400d9;">1.0</span> <span style="color: #002200;">-</span> kFilteringFactor<span style="color: #002200;">&#41;</span>;
_accelerometer<span style="color: #002200;">&#91;</span><span style="color: #2400d9;">2</span><span style="color: #002200;">&#93;</span> <span style="color: #002200;">=</span> acceleration.z <span style="color: #002200;">*</span> kFilteringFactor <span style="color: #002200;">+</span> _accelerometer<span style="color: #002200;">&#91;</span><span style="color: #2400d9;">2</span><span style="color: #002200;">&#93;</span> <span style="color: #002200;">*</span> <span style="color: #002200;">&#40;</span><span style="color: #2400d9;">1.0</span> <span style="color: #002200;">-</span> kFilteringFactor<span style="color: #002200;">&#41;</span>;
&nbsp;
<span style="color: #11740a; font-style: italic;">// Compute values for the three axes of the acceleromater</span>
x <span style="color: #002200;">=</span> acceleration.x <span style="color: #002200;">-</span> _accelerometer<span style="color: #002200;">&#91;</span><span style="color: #2400d9;">0</span><span style="color: #002200;">&#93;</span>;
y <span style="color: #002200;">=</span> acceleration.y <span style="color: #002200;">-</span> _accelerometer<span style="color: #002200;">&#91;</span><span style="color: #2400d9;">0</span><span style="color: #002200;">&#93;</span>;
z <span style="color: #002200;">=</span> acceleration.z <span style="color: #002200;">-</span> _accelerometer<span style="color: #002200;">&#91;</span><span style="color: #2400d9;">0</span><span style="color: #002200;">&#93;</span>;
&nbsp;
<span style="color: #11740a; font-style: italic;">// Compute the intensity of the current acceleration</span>
length <span style="color: #002200;">=</span> <span style="color: #a61390;">sqrt</span><span style="color: #002200;">&#40;</span>x <span style="color: #002200;">*</span> x <span style="color: #002200;">+</span> y <span style="color: #002200;">*</span> y <span style="color: #002200;">+</span> z <span style="color: #002200;">*</span> z<span style="color: #002200;">&#41;</span>;
&nbsp;
<span style="color: #11740a; font-style: italic;">// If above a given threshold, it is a shake</span>
<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span><span style="color: #002200;">&#40;</span>length <span style="color: #002200;">&amp;</span>gt;<span style="color: #002200;">=</span> kEraseAccelerationThreshold<span style="color: #002200;">&#41;</span> <span style="color: #002200;">&amp;</span>amp;<span style="color: #002200;">&amp;</span>amp; <span style="color: #002200;">&#40;</span>CFAbsoluteTimeGetCurrent<span style="color: #002200;">&#40;</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&amp;</span>gt; _lastTime <span style="color: #002200;">+</span> kMinEraseInterval<span style="color: #002200;">&#41;</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
<span style="color: #002200;">&#91;</span>self changeImage<span style="color: #002200;">&#93;</span>;
_lastTime <span style="color: #002200;">=</span> CFAbsoluteTimeGetCurrent<span style="color: #002200;">&#40;</span><span style="color: #002200;">&#41;</span>;
<span style="color: #002200;">&#125;</span>
<span style="color: #002200;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.rogerboesch.com/2008/12/19/accelerator-programmieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Song in Mobile iTunes suchen</title>
		<link>http://www.rogerboesch.com/2008/11/20/song-in-mobile-itunes-suchen/</link>
		<comments>http://www.rogerboesch.com/2008/11/20/song-in-mobile-itunes-suchen/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 13:00:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPhone/iPad Programming]]></category>
		<category><![CDATA[Code snippet]]></category>

		<guid isPermaLink="false">http://www.rogerboesch.com/?p=94</guid>
		<description><![CDATA[Manchmal sind es die kleinen Dinge, die einmal gefunden, sehr einfach sind, aber über die leider wenig Informationen zu finden sind. Dazu gehören die Url Commands, die iTunes kennt und die aus anderen Programmen aufgerufen werden können, um z.B. einen Titel anzuzeigen. Die meisten Beispiele, die man hierzu findet, zeigen zum Beispiel ein bestimmtes album [...]]]></description>
			<content:encoded><![CDATA[<p>Manchmal sind es die kleinen Dinge, die einmal gefunden, sehr einfach sind, aber über die leider wenig Informationen zu finden sind. Dazu gehören die Url Commands, die iTunes kennt und die aus anderen Programmen aufgerufen werden können, um z.B. einen Titel anzuzeigen. Die meisten Beispiele, die man hierzu findet, zeigen zum Beispiel ein bestimmtes album oder Song an, darüber hinaus gibt es aber noch wesentlich mehr was möglich ist. Das nachfolgende Code Snippet zeigt zum Beispiel wie man aus einer nativen iPhone App einen Song anzeigt:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>searchSong<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #400080;">NSString</span><span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>songName <span style="color: #002200;">&#123;</span>
<span style="color: #400080;">NSString</span><span style="color: #002200;">*</span> str <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #400080;">NSString</span> stringwithFormat<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;http://ax.search.itunes.apple.com/WebObjects/MZSearch.woa/wa/search?submit=edit&amp;amp; term=%@&quot;</span><span style="color: #002200;">&#93;</span>;
<span style="color: #400080;">NSURL</span><span style="color: #002200;">*</span> url <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #400080;">NSURL</span> URLWithString<span style="color: #002200;">:</span>str<span style="color: #002200;">&#93;</span>;
<span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>UIApplication sharedApplication<span style="color: #002200;">&#93;</span> openURL<span style="color: #002200;">:</span>url<span style="color: #002200;">&#93;</span>;
<span style="color: #002200;">&#125;</span></pre></td></tr></table></div>

<div style="background: white none repeat scroll 0% 0%; font-family: Courier New; font-size: 10pt; color: black;"></div>
]]></content:encoded>
			<wfw:commentRss>http://www.rogerboesch.com/2008/11/20/song-in-mobile-itunes-suchen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CoverFlow View (selber) programmieren</title>
		<link>http://www.rogerboesch.com/2008/11/16/coverflow-view-selber-programmieren/</link>
		<comments>http://www.rogerboesch.com/2008/11/16/coverflow-view-selber-programmieren/#comments</comments>
		<pubDate>Sun, 16 Nov 2008 08:02:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPhone/iPad Programming]]></category>
		<category><![CDATA[Code snippet]]></category>
		<category><![CDATA[Core Animation]]></category>
		<category><![CDATA[Cover Flow]]></category>

		<guid isPermaLink="false">http://www.rogerboesch.com/?p=84</guid>
		<description><![CDATA[Für ein aktuelles iPhone Projekt benötigte ich dringend ein CoverFlow View. Aber genau danach sucht man auf den Apple Entwickler Seiten, im Beispielcode und auch in Google Search mehr oder weniger vergebens. Blieb also nichts anderes übrig, als so ein Custom View selber zu schreiben. Der grösste Vorteil dabei ist das von Mac OSX her [...]]]></description>
			<content:encoded><![CDATA[<p>Für ein aktuelles iPhone Projekt benötigte ich dringend ein CoverFlow View. Aber genau danach sucht man auf den Apple Entwickler Seiten, im Beispielcode und auch in Google Search mehr oder weniger vergebens. Blieb also nichts anderes übrig, als so ein Custom View selber zu schreiben. Der grösste Vorteil dabei ist das von Mac OSX her bereits bekannte Core Animation Framework, das es in (fast) identischer Form auch für&#8217;s iPhone gibt. Theoretisch sollte eine Umsetzung also relativ einfach sein&#8230; War es dann eigentlich auch, mit einigen ganz kleinen Hürden, die sich zwischendurch ergaben. Bei einem solchen Vorhaben hat sich bei mir immer das folgende Vorgehen bewährt.</p>
<p>Zerlegen des gesamten Control&#8217;s in die einzelnen Bestandteile (Layer, Subviews, Aufbau etc.). Macht man das für ein CoverFlow, so besteht dieses prinzipiell aus zwei Komponten:</p>
<p>Zum einen aus dem View selber (in dem sich das Geschehen abspielen soll) und zum anderen aus einzelnen Covers (oder generell Images), die mehrfach vorkommen, ein Bild enthalten und sich an drei Positionen befinden kann. Das einzelne Cover wiederum besteht aus dem Bild selber und einem Spiegelbild (Reflection). Bisher also alles Komponenten, die im iPhone SDK vorhanden sind. Das einzige was nicht standardmässig vorhanden ist, ist die Reflection, zudem fehlen hier die von Mac OSX bekannten Filter. Aber das lässt sich umgehen. Die Struktur des Controls (und damit auch der Aufbau der Klasse) wäre nun also soweit klar und ist in nachfolgender Abbildung noch ein wenig genauer (technisch detaillierter) abgebildet.</p>
<p>Der Code, der notwendig ist, um den View zum Leben zu erwecken, könnte also wie folgender Pseudocode aussehen:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">for all images {
 create a cover layer {
  create an image layer and add it to the cover layer
  create a reflection layer and add it to the cover layer {
   add a reversed image
   add a gradient
  }
 }
}
&nbsp;
Position the cover layer at left, center or right position
&nbsp;
if (cover is at left or right position) {
  make a transformation of the cover view
  re-position each cover
  transformation again
}</pre></div></div>

<p>Eigentlich ganz einfach oder? Ich hoffe, dass die Gedankengänge nachvollziehbar sind und genug Anregung bieten, einen CoverFlow View selber zu programmieren.  Auf das eine oder andere Thema werde ich in künftigen Einträgen sicher noch ein wenig näher eingehen. Viel Spass beim nachprogrammieren!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rogerboesch.com/2008/11/16/coverflow-view-selber-programmieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
