dnjiro’s 9VAe blog

誰でもアニメが作れる無料ソフト9VAeきゅうべえ開発者のブログ

9VAeきゅうべえiPad版、画像表示、文字入力ができるようになった。

9VAeきゅうべえiPad版開発記録

昨日、今日の作業はこんな感じ。

ポリポリゴン(ドーナツのような穴のある図形)

ポリポリゴンをテストするには、グループ化しないといけないが、今、グループ化はメニューバーにしかなくて、iPad版にはメニューバーがない。選択枠の中心メニューにグループ化を入れる必要があるかも。とりあえず、サンプルデータ呼び出しの中にグループ化を入れてテストすることにする。

 

普通のポリゴンと処理内容は同じなので簡単にできた。

 

点線

iOSでは、CGContextSetLineDashで点線が描けないのか。XORだと点線が描けた。不思議。よくわからんので後回しにするが、最後の画像ではいつのまにかできてる。

ios - CGContextSetLineDash is unavailable - Stack Overflow

 

文字入力

文字入力や数値入力のためには、ダイアログを出さないといかん。その方法を調べると

UIAlertViewが非推薦になり、ViewControllerを経由しなければならなくなったらしい。とりあえず、ViewControllerに以下のコードを入れると、ひとまず文字入力ができた。

objective c - How to add text input in alertview of ios 8? - Stack Overflow

キャンセルボタンの付け方、項目の増やし方は下を見つけた。

入力欄付きUIAlertControllerサンプル - ROADTO みちログ

 

入力した文字列を取り出すために、char と NSStringの変換が必要である。

(いまさら)Objective-C 型変換まとめ - Qiita

 

色々操作していると、ソフトキーボードが表示されなくなった。その復帰方法。どうも、Macのキーボードを押すと、ハードキーボード接続になって、ソフトキーボードが表示されなくなるみたいだ。

iOSシミュレータでTextFieldをクリックしても、キーボードが表示されない - 使って創ってApp

 

アラートを表示するには、ViewControllerから呼び出す必要があるが、これはメインアプリ用に開放したい。9VAeきゅうべえのややこしい処理は QvaeViewの中に updateView 関数として用意することにして、これをメインの ViewController からタイマーで読み出してもらうことにした。このタイマーを利用してアニメ再生も行う。文字入力が必要ならダイアログを表示して入力ができる。プログラムの構造が決まってきた。

 

 写真の入力

UIImagePickerというのがあるらしい。次は、iPadの中の写真入力に挑戦しよう。

カメラロールの写真から画像を取得(iOS, Objective-C) – nktmemo

iOSでフォトライブラリから画像を取得する方法 - Qiita

 

 

ところが、これを実行すると落ちる。どうもプライバシー設定が必要みたいだ。

objective c - iOS 10 - App crashes To access photo library or device camera via UIImagePickerController - Stack Overflow

info.plist を開いて右ボタンで項目追加し、

Key       :  Privacy - Photo Library Usage Description    
Value     :  $(PRODUCT_NAME) photo use

を追加すると、なるほど!ちゃんとできるようになった。

 

しかし、フォトライブラリに画像が入ってないので、真っ黒。下を参照して画像を入れる。なお、下のコードだと、pickerは表示されなかった。多分古いコード。

iOSシミュレータに画像を取込む - Kazzzの日記

iOSシミュレータに写真を追加 - まーのすけRoom

この操作で、iPhoneシミュレータの中に画像を保存することはできた(Photosで見える)。さらに、元々サンプル画像が入っていたみたいだ。ところが、UIImagePickerでは何も表示されない。

[iOS]UIImagePickerControllerを使って写真データを読み込み方法 : 永遠日誌

ここがもう少し詳しかった。

UIImagePickerControllerSourceTypePhotoLibrary と 

UIImagePickerControllerSourceTypeSavedPhotosAlbum があるが、UIImagePickerControllerSourceTypePhotoLibrary はアルバム選択があり、範囲が広いらしい。結局、UIImagePickerの起動とキャンセルの処理はできたが、iPadの中の画像が見えない。一旦諦め。

 

こういう場合は、できるところから作っていく。リソースの読み出しはできるようになったのでリソースにサンプルの画像データを入れて、画像表示ルーチンまで作成した。

 

下の画像の背景が PNG画像。なぜか点線もできてる。穴の空いた図形に半透明グラデーションがかかっている。

f:id:dnjiro:20170907180124p:plain