「たのしいSwiftプログラミング」でつまずいた

 「本の通りやってるつもりなんだけど、上手くいかない。」そんなことが、プログラミングでは良くあります。昔だったら諦めていたのですが、今はWebのどこかに解決策が書いてあったりするので、とても助かります。そんな話です。

本を買ってきました

 20年ぶりくらいにプログラミングをやってみようと思い、できたばかりの「Swift」という言語を勉強することにした。SwiftはAppleがiOSとOS X向けに開発した言語で、”できたばかり”というのが惹かれたポイントです。

 早速本屋で何冊か出版されているものの中から、XCode6.1に対応していて、読みやすそうな「たのしいSwiftプログラミング」という本を買ってきた。よく分からないところが適当に読み飛ばして、いよいよ実践!というところでつまずきました。

(まだ半分くらいしか読んでいませんが、とても分かりやすい文章だと思います。)

自動レイアウトのはずが、全然自動的にレイアウトされない

 ストーリーボードにボタンを配置します。ここまでは本を読んでいけば何の問題もなくたどり着けると思います。

 ボタンを選択してから、Alignボタンを押します。左のような設定画面から、本の指示通りにチェックをして、一番下のAdd 1 Constraintというボタンをクリックします。

 View Controllerからサイズインスペクタで横幅を600から320に変更します。すると、「Say Hello」というボタンが中央に配置されるはずなのですが、右に配置されて、半分ほど切れています。「なぜだ!」と何度も本を読み返し、何度も最初からやり直しました。何度やっても結果は同じです。

 この説明は「自動レイアウトの設定をしよう」という部分で、画面サイズに合わせて相対的に配置するという内容です。絶対的配置の場合は”ずれる”ということで、前に説明されていて、それと同じようにずれるのです。

 ネットでいろいろと調べた結果、解決方法を見つけました。Swiftはまだできたばかりなのに、もうこんなにすばらしい解説のページがありました。

 

 XCode6のstoryboardを攻略3 Align編

 

 

どうすれば中央に配置されるのか

 解決方法は2つありました。

 1つ目は「Update Frames」の項目を”None”ではなく、”Items of New Constraints”にすることです。

 もう一つは、「Align」ではなく、「Resolve Auto Layout issues」を押すと出てくる"Update Frames"を選択することです。

 そうすると、ちゃんと中央にボタンが配置されるようになりました。

 ただ、新たな問題があって、どちらの方法でも一番上に行っちゃうんですよ。どうしたらよいのでしょうか?

 こんなことをいろいろ悩むのも、プログラミングの楽しさです。(仕事でプログラミングをやってる人にとっては、たいへんなんだろうけど・・・)