javaSEがiOSアプリデザイン、開発に挑む日記

本業java SEがswift、デザインの勉強したことを残しておくブログ

swift

swift 円を描く

そこまで難しくなかったので画像用意ではなくて これで良いかも // 円の描画 let ovalShapeLayer = CAShapeLayer() //線 ovalShapeLayer.strokeColor = UIColor(red: 1, green: 1, blue: 1, alpha: 1).CGColor //塗りつぶし ovalShapeLayer.fillColor = UICo…

swift ソースでグラデーション背景を作成

グラデーションのある背景はイラレとかで作らなきゃいけないと思っってたけど 簡単なものならソースで作れる。 //グラデーションカラー一覧 let topColor = UIColor(red:0.07, green:0.357, blue:0.592, alpha:1) let midColor = UIColor(red:1.0, green:1.0…

タップした時、枠が波紋のように広がるアニメーション

色々作ってるうちに、こういう細かいとこがUXというのかなと。 func anyTapGesture(sender: UITapGestureRecognizer){ let tmpX:CGFloat = sender.view!.frame.origin.x let tmpY:CGFloat = sender.view!.frame.origin.y let tmpH:CGFloat = sender.view!.fr…

swift 音楽を再生しながらアプリで音を鳴らせるようにする

耳コピとか、音楽系アプリなら必須ですね。 cafファイルを再生する mp3ファイルをcafファイルに変換するのは以下ターミナルで実行 afconvert -f caff -d ima4 【変換するファイル名】.mp3 【出力するファイル名】.caf 複数再生できるよう設定を変更 let audi…

swift NSBundle.mainBundle().pathForResource()でファイルがあるのにnilになる時の対処

mp3ファイルをcafに変換して入れ直したらnilで落ちるようになってはまったのでメモ mainBundle()はテストでは使えないよ、っていうのもあったけど ファイルを入れる時に以下にチェックを入れるとうまくいった。 違う方の対策はswiftでいうクラスの取得がわか…

swift UILongPressGestureRecognizerのアクション

UILongPressGestureRecognizerの長押し認識を使う時、長押しを認識と離す時で2回アクションが起きるのを制御するメモ senderのstateで判別ができる。 override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view…

swift storyboardで画面サイズに合わせたviewのconstraints

複数機種で綺麗にレイアウトしたい時、 それぞれの機種に対してstoryboardファイルを作るか、コードの中でガリガリやらなきゃいけないかと思っていたら、やり方があった。 親viewに対してEqual Height(width)を指定 画面サイズに合わせて伸縮する辺を親view…

swift ロケールから自分のタイムゾーンへ時刻変換

端末のロケールからユーザのタイムゾーンに時刻変換するメソッド。 GMTで送られてくるAPIを使用するときとかに。 func changeDateFormatM(dt_txt:String)->String{ var date_formatter: NSDateFormatter = NSDateFormatter() date_formatter.timeZone = NSTi…

swift nilチェック

nilになることがあって落ちるのを防ぐためにif文でチェックする方法。 記述方法をいつも忘れて調べなおしてるのでメモ。 以下はappDelegateに持たせた変数がまだセットしてない(nil)かチェックしてから使用する例 if let nilCheck = appDelegate.isMapSelect…

swift 標準マップの表示

純正マップになってから全然使ってないけど ライセンスとかアクセスが制限されない(と思われる)ので ちょっと使いたいぐらいなら良いかも import UIKit import MapKit class SelectLocationViewController: UIViewController, MKMapViewDelegate { var lat =…

swift iAd 一番簡単な方法

テスト的に入れてみたiAd 収益でクラスとかではないので一番簡単な方法で実施 iAdフレームワークのリンク プロジェクトの「general」→「Linked Frameworks and Libraries」で「+」クリック iAdで検索して「iAd Framework」 を追加 iAdフレームワークをインポ…

swift 天気アプリ

先月までにと、自分的ノルマで作成してきたアプリを申請 取得した天気をスクロール形式で表示。 背景はひとつながりの草原で、 天気のよって暗さとかが変わるような仕様。 結局こんな感じで落ち着く。 審査が早く通れば良いなと。 にしても、 openWetherMap…

swift 文字列の一部を取得

javaだとsubsting()で考えるまでもないけど swiftだと型の罠にハマったのでメモ。 let hh:String = (formatDate as NSString).substringWithRange(NSRange(location: 6,length: 2)) as String substringWithRange()で指定部分を取得できるけど 型がNSString…

swift Reachabilityを使う

iOS Developer Libraryに通信状況を確認できる「Reachability」なるライブラリがあった。 誰かのライブラリを使わないって良い... ライセンスとかで使用条件を確認したりするのが結構疲れる... Reachabilitydeveloper.apple.com そして、テストして気がつい…

swift 画面間で値を共有する

今までは画面遷移の際にセグエのidentiferから次の画面を特定して、次の画面のパラメータに値を入れて... とか面倒くさいことやってたけどこんな簡単に出来るんだったとは... AppDelegateに変数定義 class AppDelegate: UIResponder, UIApplicationDelegate …

swift 画像をリサイズして使用する

Retina対応とかで2xのサイズで用意してサイズは1xとしたいことが多かったりする。 let orgImg = UIImage(named: "orgImg.png") let resizedSize = CGSizeMake(365, 400); UIGraphicsBeginImageContext(resizedSize); orgImg?.drawInRect(CGRectMake(0, 0, re…

swift フォアグラウンド状態になった時に処理を実施

バックグラウンドにしたアプリを再度フォアグラウンドにした時に更新させるのを検討した時、意外に面倒くさかったのでメモ。 AppDelegate.swiftのapplicationWillEnterForeground()でviewControllerに通知を送るようにする func applicationWillEnterForegro…

NSURLSessionの後処理にラベル更新処理書いたらダメ

ちゃんと理解して使っていないからこうなるんですが 引っかかったのでメモ JSONで天気情報をAPIで取得して画面表示 を検討して色々やっていたら ちゃんとコンソールのログで取得できているのに 画面表示には数十秒遅れて反映される現象が... let url = NSURL…

swift UIScrollViewでスクロールさせるのにcontentSizeの指定が必要

勘違いしていてハマったのでメモ。 画面の一部がスクロールするような感じにしたくて UIScrollViewをstoryboardに配置して実行。 最初、UIScrollView自体のサイズがスクロールするサイズだと思っていて スクロールしないで悩んでたら そうじゃなくて、 「con…

swift viewDidLoadとviewDidAppear

webページでは毎回表示時に画面更新が走るけど iOSアプリでは最初に用意されているviewDidLoad()では最初の一回目の表示にしか呼ばれない。 そんな時はviewDidAppear()を追加。 画面遷移して戻ってくる際に呼ばれるので 別画面でデータ更新して戻る。戻ると…

swift アプリでテキストの文字数制限

簡単だけどメモ htmlみたいにmaxlengthで制御できたら良いのに... func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { // 変更後の内容を作成する var tmpStr = textField…

非表示フォルダ内に移動するショートカットキー

iOSシミュレータでテストしてる時にFMDBとか使ってる場合、 DBファイルを指定して中身を見たい時に ライブラリフォルダが非表示設定で 見えてもダブルクリックじゃ移動できない時のショートカット command + shift + g 出てくる入力欄に移動するフォルダ名を…

swift viewを最背面、最前面に移動

viewを最背面、最前面に持ってくメソッド名が統一感なくて覚えにくいのでメモ。 最背面 self.view.sendSubviewToBack(targetView) 最前面 self.view.bringSubviewToFront(targetView) viewの削除メソッドもそうだけど、パッと見て分かりにくいのが多い気がす…

swift 遷移先にパラメータを引き継ぐ

一般的なhttpのリクエスト、レスポンスのような感じではないようで。 storyboardでセグエをつなぐ セグエのIdentifierに名前を付ける 遷移元で以下ソースを記述 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue.id…

swift 現在地取得

iOSシミュレータで動作確認がうまくいったりいかなかったりするけど 実機でテストするとちゃんと取れる。 iPadの実機とかも揃えようか... override func viewDidLoad() { super.viewDidLoad() // 現在地の取得. myLocationManager = CLLocationManager() myL…

swiftで音源打ち込み再生、ブツッと切れない

swiftで 、コードをセットしたら自動でソロしてくれるアプリ欲しいなぁと思って、 第一段階として 指定秒数、指定順序で再生して、音がブツッと切れないソースを記述 class ViewController: UIViewController { class SoundNode{ var sound : AVAudioPlayer …

iOSアプリ 雲リマインダー

初アプリ申請から10日ほど。 やっと通りました。 雲リマインダー Katsuyasu Murata ライフスタイル 無料 内容としてはリマインダーを登録して、 雲の形にリマインダーが流れるというお手軽な感じで。 フラットデザインを意識したらモサっとした癒し系な感じ…

swiftで日付比較がわかりにくい件(NSComparisonResult.OrderedAscending)

swiftで日付比較する時、以下のような感じで判定する // 現在日付がdateDue(期限)を過ぎたらtrueを返す let now = NSDate() if dateDue.compare(now) == NSComparisonResult.OrderedAscending { return true }else{ return false } 分かりにくい... 覚え方と…

swiftで親viewから子viewを削除する

簡単だけど普通に考えるのと逆な感じなのでメモ。 var delview = self.view.viewWithTag(【viewのタグ番号】) delview?.removeFromSuperview() 子が自分から親の中から削除するようにするって不思議。 //

UIColor()の引数はmaxが1.0

swiftでUIColor(red: <#CGFloat#>, green: <#CGFloat#>, blue: <#CGFloat#>, alpha: <#CGFloat#>)を指定する際にハマったことをメモ... (自分だけかもだけど) #3C91E6をカラーとして指定する際、 16進数 red:3C green:91 blue:E6 alpha:1.0 ↓ 10進数 red:60 …