タッチイベントを受け取り処理を行うUIViewのサブクラスを作成

2週間ぶりの投稿ですみません。

今回はタッチイベントを受け取り処理を行うUIViewのサブクラスを作成しましたので、その備忘録になります。


UIViewを継承したサブクラスを作成する場合は
イニシャライザをオーバーライドする必要があるようです。

またUIViewクラスはイベントを処理する処理をもつUIResponderクラスを継承しているのでUIViewクラスでイベント処理を実装することができることがわかりました。
(UIViewControllerも同様)

以下は実行結果です。
f:id:hiramatch:20150228131139p:plain

touchesBeganはViewにタッチした場合に実行し
Viewから離した時にtouchesEndedが実行されました。

また画面はありませんがタッチしたまま移動するとtouchesMovedが実行されることを確認しました。
touchesCancelledについてはどういう場合に実行されるかまだよく分かっていないので今後の宿題としたいと思います。

SwiftでAutoLayoutに挑戦(複数View)

今回もSwiftによるAutoLayoutです。
前回はボタンを画面中央に表示する制約でしたが
今回は複数のUIViewとそれぞれの相対位置を指定する制約に挑戦しました。
以下は実行後のシミュレーター画面です。(iPhone6)
f:id:hiramatch:20150214195429p:plain

以下は緑のUIViewになります。

ViewControllerのviewプロパティのサブViewとして登録しています。

次が赤のUIViewです。

緑のUIViewのサブViewとして登録しています。

最後は青のUIViewになります

赤のUIViewのサブViewとして登録しています。
各UIViewをそれぞれサブViewとして登録しているので各UIViewの相対位置関係が保たれています。

SwiftでAutoLayoutに挑戦

今回SwiftでAutoLayoutを実行するプログラムに挑戦しました。

大きな流れとしては
①ボタンの生成
②AutoresizingMaskをfalseに設定
③ボタンをviewcontrollerのviewプロパティに追加
④制約を追加
となっています。

②の「AutoresizingMask」についてはまだよくわかっていないので今後の宿題としたいと思います。
 最初、この処理を入れておらず思うように動かなかったのですが、原因を突き止めるのに苦労しました。

④の制約を指定するクラス「NSLayoutConstraint」のイニシャライザですがitemとattributeは何となく分かりますがそれ以降のパラメータについてはまだ分かっていないのでこちらも今後の宿題としたいと思います。

以下は実行結果です。
f:id:hiramatch:20150211085404p:plain

今後もAutoLayoutについていろいろ挑戦したいと思います。

AutoLayoutでどのデバイスでも常に中央表示

また久しぶりの投稿になってしまいましたが
今日はAutoLayoutを触っていましたのでそのメモです。

AutLayoutの機能でどのデバイスでも画面中央にボタンを表示させる設定をしました。
まずはAutoLayoutで設定する前のプレビューです。
ストーリーボード上では中央表示されて見えますが、実際に表示されるボタンは
どのデバイスでも右寄りになります。
f:id:hiramatch:20150208085959p:plain


続いてAutoLayoutで制約を追加したときの画面です。
f:id:hiramatch:20150208090415p:plain

「Horizontal Center in Container」と「Vertical Center in Container」にチェックを入れ
「Add 2 Constraints」ボタンを押下しました。

サイズインスペクタで制約追加を確認したのが以下です。
f:id:hiramatch:20150208090715p:plain


制約追加後のプレビューは以下になります。
f:id:hiramatch:20150208090841p:plain

まだまだAutoLayoutは初心者レベルですが
もっとできるようにがんばります。

Swiftで配列の要素をシャッフルするプログラムを作ってみました

久しぶりの投稿になりますが
昨日iOSアプリの開発講座で教わった配列の要素をシャッフルするプログラムを
再度自分で作ってみました。

f:id:hiramatch:20150125211931p:plain

シャッフルする配列を無作為に一つずつ、取り出し
新たに用意した配列に先頭から追加しています。

これまで仕事とかでプログラムを作ってきましたが
こういうやり方は思いつかなかったです。

Auto Layoutを使ってみる

今日はXCodeのAuto Layoutを使ってみましたのでそのメモです。

やってみたのはラベルを画面サイズに関わらず、常に左下に表示させることです。

f:id:hiramatch:20150106063217p:plain

位置の固定は以下の通りです。
「□」に囲まれている赤い線をクリックで実線にし
数値を入力しています。

f:id:hiramatch:20150106063306p:plain


また設定後はサイズインスペクタで確認が可能で
ここで取消や調整も可能のようです。
f:id:hiramatch:20150106063628p:plain


Auto Layoutの設定が効いているかプレビューで確認もしました。
f:id:hiramatch:20150106063846p:plain


今回触ったのはまだほんの一部なので
もっといろいろできるようになりたいです。

アクションシートから画面遷移

アクションシートから画面遷移させるサンプルです。
これまでボタンを押下して画面遷移させていたのですが、今回はアクションシートをアクションを指定時に画面遷移させてみました。

f:id:hiramatch:20150102091930p:plain


セグエはこれまでボタンを次の画面にCtrlボタンを押しながらドラッグして生成していましたが、今回はボタンではなくプログラムで遷移させるので画面上部の黄色のViewControllerのアイコンを次の画面にドラッグして生成しました。

以下は1画面目のViewControllerです。
アクションを選択時、testメソッドを実施します。
testメソッド内ではperformSegueWithIdentifier()でセグエを発動し画面遷移させています。


以下は実行結果です
f:id:hiramatch:20150102093421p:plain

f:id:hiramatch:20150102093442p:plain