<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:blogChannel="http://backend.userland.com/blogChannelModule" >
  <channel>
  <title>混沌のiPhone開発ブログ</title>
  <link>https://kontonsoft.blog.shinobi.jp/</link>
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="https://kontonsoft.blog.shinobi.jp/RSS/" />
  <description>混沌のiPhone/iPod touch向けアプリ開発関連ブログ
開発関連の覚書です</description>
  <lastBuildDate>Sun, 07 Apr 2013 03:47:44 GMT</lastBuildDate>
  <language>ja</language>
  <copyright>© Ninja Tools Inc.</copyright>
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" />

    <item>
    <title>iOS6における画面回転への対応方法</title>
    <description>
    <![CDATA[iOS5や6になって画面の表示前に出されるメッセージ(一般的な言い方をすると関数でしょうか)群にかなり変更があり、昔のプロジェクトのままだとなんだか画面のレイアウトがおかしいぞということになりやすいです。とりあえず自分の経験でこうすれば良いのではないかという対処法について書いてゆきます。<br /><br />まず、画面を表示させたときにレイアウトに問題がある場合には、その問題のあるパーツを管理するViewControllerのメソッドファイル内で、viewWillAppear:の中で初期化するようにしておくと良いです。現在ない状態なら作っておきましょう。画面の回転状態でレイアウトを変更する必要がある場合には、現在の画面の回転状態を[[UIApplication sharedApplication]statusBarOrientation]で取得します。横向きのそれぞれで別のレイアウトにすることは稀ですから、画面が横向きかどうかをUIInterfaceOrientationIsLandscape()マクロをif文の中に放り込んで、カッコの中に先ほどの[[UIApplication sharedApplication]statusBarOrientation]を入れて画面が横向きかの判定をすれば良いでしょう。回転状態などの判定部分についてまとめると以下のような感じです。<br /><br />&nbsp;&nbsp;&nbsp; UIInterfaceOrientation interfaceOrientation=[[UIApplication sharedApplication]statusBarOrientation];<br />&nbsp;&nbsp;&nbsp; if (UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (UIInterfaceOrientationIsLandscape(interfaceOrientation)) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // iPadで画面が横向きのときの初期レイアウトを以下に追加<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // iPadで画面が縦向きのときの初期レイアウトを以下に追加<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; } else if(UIInterfaceOrientationIsLandscape(interfaceOrientation)){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // iPhone/iPod touchで画面が横向きのときの初期レイアウトを以下に追加<br />&nbsp;&nbsp;&nbsp; } else {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // iPhone/iPod touchで画面が横向きのときの初期レイアウトを以下に追加<br />&nbsp;&nbsp;&nbsp; }<br /><br />そしてshouldAutorotateToInterfaceOrientation:にはとりあえず向きに応じてYESで回転許可、NOで回転不可を返す部分だけは(iOS6以上では呼び出されることすら無いのですが)一応書いておいて、実際に回転でレイアウトをいじる部分に関してはwillAnimateRotationToInterfaceOrientation:duration:の中でtoInterfaceOrientationを使って仕分けを行って、実際のレイアウト変更を行うという形になります。<br /><br />これだけやればiOS6以上でレイアウトが崩れる問題は解決出来るでしょう。当然ながらstoryboradやnibファイルで作っているUIパーツについては事前にヘッダ側でIBOutletを含むプロパティを作成して接続済みにしておきましょう。<br />]]>
    </description>
    <category>基本</category>
    <link>https://kontonsoft.blog.shinobi.jp/%E5%9F%BA%E6%9C%AC/ios6%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E7%94%BB%E9%9D%A2%E5%9B%9E%E8%BB%A2%E3%81%B8%E3%81%AE%E5%AF%BE%E5%BF%9C%E6%96%B9%E6%B3%95</link>
    <pubDate>Sun, 07 Apr 2013 03:47:44 GMT</pubDate>
    <guid isPermaLink="false">kontonsoft.blog.shinobi.jp://entry/153</guid>
  </item>
    <item>
    <title>Tiny3D 3.6公開</title>
    <description>
    <![CDATA[バージョンアップの予告をした3.6ですが、公開開始となったのでお知らせします。<br />出力センターなどに持ち込み3Dプリンタで立体物の作成をする場合、どうやらDXFよりもSTLをサポートしている出力センターのほうが多いらしい。ならばSTLの出力も検討してみよう。今回のバージョンアップはそんな思いつきから始めたものでした。実際にそのような需要がどの程度あるのかは分かりませんが、持ち込むために他のソフトで再コンバートしなくてすむのであれば便利かもしれませんね。<br />]]>
    </description>
    <category>Tiny3D</category>
    <link>https://kontonsoft.blog.shinobi.jp/tiny3d/tiny3d%203.6%E5%85%AC%E9%96%8B</link>
    <pubDate>Wed, 27 Mar 2013 06:34:19 GMT</pubDate>
    <guid isPermaLink="false">kontonsoft.blog.shinobi.jp://entry/152</guid>
  </item>
    <item>
    <title>バージョンアップ予告</title>
    <description>
    <![CDATA[Tiny3Dの次期バージョンを開発中です。前回のバージョンアップはとりあえずiOS6で画面が乱れず表示できるようにというのが主要な目的になっていたのですが、今回は機能の追加も行います。追加予定の機能は、STL出力のサポート、iTunesのファイル共有機能を使ってのファイルのインポート、エクスポートを行う機能になります。<br /><br />オブジェクトファイルをSTL形式、DXF形式、独自形式(中身はxml)の3つで出力でき、DXF形式と独自形式についてはインポートも出来るというのが3.6での追加機能となる予定です。iTuneを経由してパソコン側にデータを吸い出したり、逆に取り込んだりが出来るようになります。STLの取り込みは現状ではサポートしませんが、次のバージョンで内部形式への変換ルールを考えて実現出来れば良いななどと思っています。全部三角形エレメントへの変換になるのでデータ量によっては重くなりそうですが。<br />]]>
    </description>
    <category>Tiny3D</category>
    <link>https://kontonsoft.blog.shinobi.jp/tiny3d/%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%A2%E3%83%83%E3%83%97%E4%BA%88%E5%91%8A</link>
    <pubDate>Wed, 20 Mar 2013 10:31:48 GMT</pubDate>
    <guid isPermaLink="false">kontonsoft.blog.shinobi.jp://entry/151</guid>
  </item>
    <item>
    <title>デバックのときだけコンソールに出力する(for Apple LLVM compiler)</title>
    <description>
    <![CDATA[以前に『<a href="http://kontonsoft.blog.shinobi.jp/Entry/58/" target="_blank" title="">デバックのときだけコンソールに出力する</a>』という記事を書きました。その記事を書いたときはXcodeの標準コンパイラがGCCでしたが、今はコンパイラがApple LLVM compilerに変わっています。現状でもこの方法が使えるのか気になったので少し調べてみましたが、結論から言うと何も細かい設定をせずメソッドファイルに以下を追加するだけで使えます。<br /><br /><p style="margin: 0px; padding: 0px; text-align: left; background-color: rgb(248, 248, 248); font-family: Monaco; font-size: 10px; line-height: normal; color: rgb(100, 56, 32); ">#ifdef DEBUG</p><p style="margin: 0px; padding: 0px; text-align: left; background-color: rgb(248, 248, 248); font-family: Monaco; font-size: 10px; line-height: normal; color: rgb(100, 56, 32); ">#define NSLog_for_DEBUG NSLog</p><p style="margin: 0px; padding: 0px; text-align: left; background-color: rgb(248, 248, 248); font-family: Monaco; font-size: 10px; line-height: normal; color: rgb(100, 56, 32); ">#else</p><p style="margin: 0px; padding: 0px; text-align: left; background-color: rgb(248, 248, 248); font-family: Monaco; font-size: 10px; line-height: normal; color: rgb(100, 56, 32); ">#define NSLog_for_DEBUG //</p><p style="margin: 0px; padding: 0px; text-align: left; background-color: rgb(248, 248, 248); font-family: Monaco; font-size: 10px; line-height: normal; color: rgb(100, 56, 32); ">#endif<br /></p><br />理由はプロジェクトのBuild SettingsタブにあるPreprocessingセクションにあるPreprosessor Macrosの項目で、もとからDEBUG=1という設定がされているためです。そのため何もせずにメソッドに上記を追加しておいて、NSLogをNSLog_for_DEBUGに置換すれば、その出力に関してはデバックの時だけログ出力するようになります。以前のコンパイラの頃に使っていたプロジェクトファイルを変換した場合でもこの設定になると思われますので、その場合も特に問題なく使えると思います。<br />]]>
    </description>
    <category>デバッグ</category>
    <link>https://kontonsoft.blog.shinobi.jp/%E3%83%87%E3%83%90%E3%83%83%E3%82%B0/%E3%83%87%E3%83%90%E3%83%83%E3%82%AF%E3%81%AE%E3%81%A8%E3%81%8D%E3%81%A0%E3%81%91%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E3%81%AB%E5%87%BA%E5%8A%9B%E3%81%99%E3%82%8B-for%20ap</link>
    <pubDate>Thu, 31 Jan 2013 02:54:06 GMT</pubDate>
    <guid isPermaLink="false">kontonsoft.blog.shinobi.jp://entry/150</guid>
  </item>
    <item>
    <title>ストーリーボードとは</title>
    <description>
    <![CDATA[久々の更新です。最近のXcodeで使える機能としてストーリーボードというものがあります。今回はそれについて書いてゆきたいと思います。<br />
<br />
これまでの状態では、画面のデザインをInterface Builderで作って、画面の移動などを行うのは全てコードを書いて行っていました。多くの場合は現在の画面から他の画面へ移る際には、現在の画面のNavigationControllerに対してpushViewController:animated:を送るという具合です。<br />
<p style="margin: 0px; font-size: 11px; font-family: Menlo; ">
	&nbsp;</p>
<p style="margin: 0px; color: rgb(61, 29, 129); ">
	<span style="color: #000000">&nbsp; &nbsp; [</span><span style="color: #bb2ca2">self</span><span style="color: #000000">.</span><span style="color: #703daa">navigationController</span><span style="color: #000000"> </span>pushViewController<span style="color: #000000">:controller </span>animated<span style="color: #000000">:</span><span style="color: #bb2ca2">YES</span><span style="color: #000000">];</span></p>
<div>
	&nbsp;</div>
<div>
	これで今の画面が左へとスクロールし、新しい画面へと移動させていました。ストーリーボードではこれらの動きをInterface Builder側で見える形にして扱う事ができます。例えばあるTableViewControllerのセルをタップして、次のTableViewControllerにスクロールする場合には、Interface Builder側では以下のような操作をします。<br />
	&nbsp;</div>
<ol>
	<li>
		Interface Builder側で移動元のセルを選択状態にしておきます。</li>
	<li>
		Controlキーを押しつつ、移動先のTableViewControllerまでマウスカーソルをクリックしたままでドラッグし、クリックを終了します。</li>
	<li>
		マウスカーソルの右下にメニューが出るので、Selection Segueの項目のpushを選びます。</li>
	<li>
		ViewController間が矢印で接続されるので、矢印中央のマークをクリックし、Attributes inspectorを表示します。</li>
	<li>
		Identifierに任意の名前をつけます。StyleがPushになっているのを確認します。</li>
</ol>
<br />
実際に画面の移動が行われる時には、移動元のViewControllerのメソッドファイル内にあるprepareForSegue:sender:が呼ばれます。そこで移動先のViewControllerに対して必要な情報（タップされたセルの示すデータオブジェクトなど）を渡します。下はその一例で、選ばれたセルの行番号(0以上のNSInteger型変数)を渡しています。移動先のViewControllerはUIStroryboardSegueのdestinationViewControllerで取得出来ます。画面内にボタンを配置して、そのボタンを押したらセルをタップした時とは別の画面（設定画面など）に遷移させる、といったような拡張が容易にできるように、先ほど上で設定したidentifierの名前で条件分岐させるようにしていますが、拡張の予定が無いならif文で分岐させる必要はありません。<br />
<br />
<p style="margin: 0px; font-size: 11px; font-family: Menlo; ">
	- (<span style="color: #bb2ca2">void</span>)prepareForSegue:(<span style="color: #703daa">UIStoryboardSegue</span> *)segue sender:(<span style="color: #bb2ca2">id</span>)sender</p>
<p style="margin: 0px; font-size: 11px; font-family: Menlo; ">
	{</p>
<p style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(61, 29, 129); ">
	<span style="color: #000000">&nbsp; &nbsp; </span><span style="color: #bb2ca2">if</span><span style="color: #000000"> ([[segue </span>identifier<span style="color: #000000">] </span>isEqualToString<span style="color: #000000">:</span><span style="color: #d12f1b">@&quot;pushToSelectQuest&quot;</span><span style="color: #000000">]) {</span></p>
<p style="margin: 0px; font-size: 11px; font-family: Menlo; ">
	&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #703daa">NSIndexPath</span> *indexPath = [<span style="color: #bb2ca2">self</span>.<span style="color: #703daa">tableView</span> <span style="color: #3d1d81">indexPathForSelectedRow</span>];</p>
<p style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(79, 129, 135); ">
	<span style="color: #000000">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span>BDSelectQuestViewController<span style="color: #000000"> *controller =</span></p>
<p style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(79, 129, 135); ">
	<span style="color: #000000">&nbsp; &nbsp; &nbsp; &nbsp; (</span>BDSelectQuestViewController<span style="color: #000000"> *)[segue </span><span style="color: #3d1d81">destinationViewController</span><span style="color: #000000">];</span></p>
<p style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(79, 129, 135); ">
	&nbsp; &nbsp; &nbsp; &nbsp; [controller <span style="color: rgb(49, 89, 93); ">setSelectedAreaIndex</span>:indexPath.<span style="color: rgb(112, 61, 170); ">row</span>];</p>
<p style="margin: 0px; font-size: 11px; font-family: Menlo; ">
	&nbsp; &nbsp; }</p>
<p style="margin: 0px; font-size: 11px; font-family: Menlo; ">
	}<br />
	<br />
	なお、ストーリーボードを使いたい場合には、新規プロジェクトを作成する時にUse Storyboardsにチェックを入れてください。これでnibファイル（拡張子はxibでしたが）の替わりにstoryboadファイルが作成されます。</p>
]]>
    </description>
    <category>Interface Builder</category>
    <link>https://kontonsoft.blog.shinobi.jp/interface%20builder/%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AA%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%E3%81%A8%E3%81%AF</link>
    <pubDate>Wed, 10 Oct 2012 09:54:27 GMT</pubDate>
    <guid isPermaLink="false">kontonsoft.blog.shinobi.jp://entry/149</guid>
  </item>
    <item>
    <title>iOS6発表</title>
    <description>
    <![CDATA[例年通りのイベントでiOS6が発表されました。サポートされるのはiPhone 3GS以降、第4世代iPod touth、iPad 2以降ということで、第3世代iPod touthと初代iPadはOS更新がストップすることになるようです。これまでハードウェア的には問題ないんじゃないかと言われていた第3世代iPadで、Siriが解禁になっています。<br />
<br />
開発者にとってはアップル製アプリとの連携がらみでいろいろ変更がありそうですね。現在のところ新ハードの情報は明らかになっていませんが、9月頃には少なくともiPod touchとiPhoneについては何か発表がありそうな気がします。]]>
    </description>
    <category>その他</category>
    <link>https://kontonsoft.blog.shinobi.jp/%E3%81%9D%E3%81%AE%E4%BB%96/ios6%E7%99%BA%E8%A1%A8</link>
    <pubDate>Tue, 12 Jun 2012 01:35:03 GMT</pubDate>
    <guid isPermaLink="false">kontonsoft.blog.shinobi.jp://entry/148</guid>
  </item>
    <item>
    <title>iOS5.1.1提供開始はいいけれど</title>
    <description>
    <![CDATA[iOS5.1.1が提供開始になっているのですが、開発者はまだ手を出さない方がよいかもしれません。<br />
というのも、Xcode 4.3.2の最新ビルド4E2002において、非サポートデバイス扱いになってしまうからです。<br />
Xcode側のアップデートが提供されるまで、iOS5.1.1にした実機では動作テストができなくなります。<br />
まあ、バージョンダウンさせればよいのかもしれませんが、それにも時間がかかります。<br />
もう少し様子をみてからバージョンアップした方がよさそうです。<br />
<br />
2012年5月8日13:25追記<br />
バージョンアップした本体を一度接続解除、再度接続し直したところ非サポートデバイス扱いではなくなりました。接続したままの単独バージョンアップではデバック用の設定等をしてくれないだけみたいです。そのためバージョンアップしても特に問題はなさそうです。]]>
    </description>
    <category>その他</category>
    <link>https://kontonsoft.blog.shinobi.jp/%E3%81%9D%E3%81%AE%E4%BB%96/ios5.1.1%E6%8F%90%E4%BE%9B%E9%96%8B%E5%A7%8B%E3%81%AF%E3%81%84%E3%81%84%E3%81%91%E3%82%8C%E3%81%A9</link>
    <pubDate>Tue, 08 May 2012 02:28:04 GMT</pubDate>
    <guid isPermaLink="false">kontonsoft.blog.shinobi.jp://entry/147</guid>
  </item>
    <item>
    <title>Xcodeの変更点</title>
    <description>
    <![CDATA[ご無沙汰してるあいだにXcodeも随分と変化していました。最近のXcodeで変更になっている主な部分は、<br />
<br />
<ul>
	<li>
		ストーリーボードの導入</li>
	<li>
		ARC(Automatic Reference Counting)の導入</li>
</ul>
<br />
といったところでしょうか。<br />
以前にInterface BuilderがXcodeと一体になった事はブログで取り上げたと思いますが、ストーリーボードはさらに一体化を推し進め、画面（シーン）間の関係もUI設計の側で扱えるようになっています。また、ARCの導入をすると自分でretainとreleaseを書かなくても良くなり（実際のところ書いては駄目になる）、多くのクラスでreleaseが廃止されています。しばらくはドキュメントを見ながらの格闘になりそうです。<br />
]]>
    </description>
    <category>基本</category>
    <link>https://kontonsoft.blog.shinobi.jp/%E5%9F%BA%E6%9C%AC/xcode%E3%81%AE%E5%A4%89%E6%9B%B4%E7%82%B9</link>
    <pubDate>Sun, 29 Apr 2012 04:11:49 GMT</pubDate>
    <guid isPermaLink="false">kontonsoft.blog.shinobi.jp://entry/146</guid>
  </item>
    <item>
    <title>iPhone4S発表</title>
    <description>
    <![CDATA[iPhone4Sが発表されました。名前から察することができますが、基本的な部分はiPhone4です。それのアップグレード版といった感じです。iPadに対するiPad2というような位置づけですね。日本での発売は10月14日からで、auからも販売になります。<br />
<br />
そしてiOS5も正式版が12日より提供されます。対応するのはiPhone3GS以降と第3世代iPod touch以降、iPad以降となります。一度iOS5にしてしまえば、それ以降はPCレスでアップグレードできるようになるので、これまでより便利になりそうです。]]>
    </description>
    <category>その他</category>
    <link>https://kontonsoft.blog.shinobi.jp/%E3%81%9D%E3%81%AE%E4%BB%96/iphone4s%E7%99%BA%E8%A1%A8</link>
    <pubDate>Tue, 04 Oct 2011 23:50:08 GMT</pubDate>
    <guid isPermaLink="false">kontonsoft.blog.shinobi.jp://entry/145</guid>
  </item>
    <item>
    <title>iOS5へのアップデート</title>
    <description>
    <![CDATA[久しぶりに更新します。ここ数ヶ月別の方面で忙しく、開発関係に割ける時間がありませんでした。ここにきて少しだけ時間が作れるようになりました。<br />
<br />
そこでまず実機にiOS5の&beta;版でも入れてみようとしたところ、何度やってもエラーが出て止まってしまいます。実機がリカバリモードになってしまいiTunesからiOS4.3.3を入れ直して復旧しました。そして再チャレンジしてみますが、またリカバリモードになって復旧しての繰り返しとなってしまいます。いろいろ調べてみたところ、どうも今回の&beta;版からは、<br />
<br />
XCodeのオーガナイザからのアップデートはできない<br />
<br />
ということのようです。ではどうすればよいのかというと、iTunesの&beta;版からアップデートします。<br />
<br />
まずiTunesの&beta;版と自分のデバイス用のiOS5&beta;をiOS Dev Centerからダウンロードして、iTunesの&beta;版をインストールします。デバイスのデータのバックアップを取っておきたい場合はインストールの前に取っておいてください。<br />
アップデートが終わったらiTunesを起動しのウインドウ左のDEVICESからアップデートしたいデバイスを選択し、中央付近に表示されるVersionのところにあるRestoreボタンをoption(alt)ボタンを押しながらクリックしてみてください。iOS5&beta;のダウンロードが終わっていればリストに展開されたディスクイメージが表示されているはずなので、そこからipswファイルを選んでOKを押します。<br />
<br />
これまでオーガナイザを使って&beta;版を入れていた人で私と同じようにはまっている人がいたら試してみてください。たぶんそれまでのハマりっぷりが嘘のようにすんなりとアップデート出来ますよ。<br type="_moz" />]]>
    </description>
    <category>基本</category>
    <link>https://kontonsoft.blog.shinobi.jp/%E5%9F%BA%E6%9C%AC/ios5%E3%81%B8%E3%81%AE%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88</link>
    <pubDate>Tue, 12 Jul 2011 02:46:20 GMT</pubDate>
    <guid isPermaLink="false">kontonsoft.blog.shinobi.jp://entry/144</guid>
  </item>

    </channel>
</rss>