Xcode
iOS
Swift

【swift】 円周率を当てていくゲームの作成 (随時更新予定)

概要

swiftの練習も兼ねて、簡単な円周率当てアプリを作成していきます。
ソースコード及び記事は随時更新していこうかなと思います。
ソースコードはこちらにありますので参考になれば幸いです。

経緯

Swiftの本に載ってる様なサンプルアプリにはなさそうで、かつ簡単なものを作って見たかった。

作業内容

※ 僕の読んだSwift入門書に書かれてあることは省いて困ったところとか困っているところとか追加で調べたところとかを書いて行きます。

UIScrollView

円周率を入力していくとなると、テキストラベルの大きさでは足りなくなってくるという問題が出てきました。そうなると考えられるのは画面のスクロールです。
ただしこのUIScrollView、レイアウト設定が少しめんどくさかったです。(しかもこれをちゃんとしないとスクロールしてくれません...)

ここで行いたいことは、UIScrollView に Label を追加して、Label が一定以上の縦幅の時にスクロールできる様になるものを作ることです。

ネットで調べたところ、UIScrollView に View を入れて Label を追加していく方法が多く取り上げられていたのですが、僕は UIScrollView と Label だけでなんとかなりました。
以下その際の設定を簡単に説明します。

はじめにUIScrollViewを持ってきてその中にLabelも追加しておく。
私はUIScrollViewのてっぺんに持ってきました。
Labelの設定で重要なのは Lines を 0 にしておくこと。
44.png

これは UIScrollView の View に対する設定(ScrollViewにカーソル合わせてControlキー押したままViewにドラッグで出てきます)
001.png

これは Label の UIScrollView に対する設定
002.png

あとは ViewController.swift 内の viewDidLoad()関数の中にこれを追加してあげる

 scrollView.contentLayoutGuide.bottomAnchor.constraint(equalTo: Label.bottomAnchor).isActive = true

こうすることでひとまずスクロールが機能するものができました。

円周率の数値の保存

円周率の数値をどうやって持ってくるか、ということも少し悩みました。
当初は10桁くらいでテストしていたので、ViewController.swift 内で配列を作って入れていましたが、スクロールのテストの際にとても多くの桁数が必要となったために変える必要がありました。(見にくくなるから)

第一案として、.csvを使う方法が挙げられました。
csvファイル自体はただのテキストファイルなので簡単に作成できましたが、csvファイルから読み込むコードがうまく書けなかったため、諦めました。

第二案(結局いまはこっち)は別の.swiftファイルで配列宣言しちゃう感じです。
makePiClass.swift というファイルを新たにつくり、

class makePi{
    let pi = [1,4,・・・・・・・・]
}

みたいな感じで新たなクラスを作りました。そして、ViewController.swift で

let pi01 = makePi().pi 

としてやると pi01 に円周率配列を入れることができます。
ひとまずこの問題は解決したのでこのままで作業を進めています。

現在の課題

テンキーの配置、AutoLayoutがうまくできない。