スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

続きを読む

Delegateとは?

iOSのプログラミングをしていると必ずDelegateという言葉にでくわす。意味を知らなくてもどうにかなることもあるが意味を知っておいたほうがいい。私自身、曖昧なままいくつもアプリを作ってきたが。。わかりやすく言うと「レバニラ定食。ライスをチャーハンに変更で。」というようなこと。レバニラ定食はレバニラと味噌汁とライスのセットと決められているが、そこをあえてライスをチャーハンに変更して注文するイメージ。店側と...

続きを読む

【Swift】cocoapodsの使い方

「画像をライブラリから複数選択する」という処理をしたく、実装方法を悩んでいたが結局ライブラリに頼ることにした。ライブラリを使うと100時間分の工数が一気に0に近くなったりするが、個人的にはあんまり利用したくない。というのは「なにかあったとき」になにがなんだかわからなくなる可能性があるからだ。それはともかく、BSImagePickerというライブラリがあったので使わせてもらうことに。https://cocoapods.org/?q=bsimage...

続きを読む

Swift2とXcode7.0へ移行する時のハマりポイント抜粋

Swift2が発表され、Xcodeは7.0になり、iOSは9。こういうメジャーアップデートは開発者を興奮させる一方で絶望させる。これは経験したことがあるひとじゃないとわからないことだが、昨日まで調子よく動いていたコードに何百というエラーが出てきて修正をせまられる。この時の絶望といったらない。ただ直せばいいてもんじゃなく、当然その後テストも必要なので、ものすごい工数がかかる。創造的な工数ならどれだけでもかけたいところ...

続きを読む

【Swift】modalの表示が妙に遅い場合

modalを利用して別のViewControllerを表示させようとするとき、処理が妙に遅いことがある。下記のようにメインスレッドで処理すれば遅延が解消される様子。NSOperationQueue.mainQueue().addOperationWithBlock({self.presentViewController(self.modalView, animated: true, completion: nil)})...

続きを読む

iTunes ConnectでMetadata rejectedの時の注意点

iOSのアプリを申請するとリジェクトされることがあるが、Metadataをリジェクトされるというステータスがあることを最近知った。Metadataをリジェクトされた場合は「Submit to Review」ボタンを押してはいけない場合があるとのこと。これをしてしまうと審査の順番待ちがはじめからになってしまう。場合によっては「ここを確認して再度Submit to Reviewしてね」と書いてあることもあるのだが、そうではない場合は基本的にメッセージ...

続きを読む

【Swift】全てのModalを閉じる

現在のModalを閉じるには下記のようにする。 self.dismissViewControllerAnimated(true, completion: nil)すべてのModalを閉じるには一番上の階層で下記のようにすればよい。self.presentingViewController?.presentingViewController?.dismissViewControllerAnimated(true, completion: nil)...

続きを読む

【Swift】hashタグやメンションをUITextViewでクリックできるようにする

下記のサイトに方法が書いてあるのでこの通りに進めればいい。https://github.com/ThornTechPublic/SwiftTextViewHashtagとはいえ、英語なのと少々説明不足な部分があるので下記にまとめたい。UITextViewにはもともとリンクを検出してクリッカブルにする機能が備わっているのはご存知の通りだ。この機能を利用し、ハッシュタグをURLのリンクのように偽ってクリッカブルにし、さらに、クリックした後の動作も定義しようとするのが上...

続きを読む

【Swift】スクロールの開始と終了を検知

UIScrollViewやUITableViewでスクロールの開始や終了を検知したい時は下記を利用。ちなみにUITableViewはUIScrollViewを継承しているのでこのままで利用可能。 func scrollViewWillBeginDragging(scrollView: UIScrollView) { println("スクロールスタート") } func scrollViewDidScroll(scrollView: UIScrollView) { println("スクロール中") } func scrollViewDidEndDragging(scrollView: UIScroll...

続きを読む

【Swift】print VS println

Swiftの勉強は書籍を参照して行った。その他にもネットで調べたり動画をみて勉強したりしたが、コンソールにメッセージを出したい時はprintln("hello world")とするようにと、どのソースでもprintlnを紹介していた。だから長いことprintlnしかないと思っていたのだが、実はprint("hello world")もある。違いはprint("hello ")print("world")hello worldprintln("hello")println("world")helloworldのようにprintlnは文字列の後に改...

続きを読む

【Swift】admobを導入する方法

iOSのアプリを作ったら広告を入れたくなる。広告にはいくつかプロバイダ(アドネットワーク)がある。有名なのがiAd, nendそしてAdMob。それぞれサービスや料率が違ったりするのだが、今回はそのなかからGoogleが提供しているAdMobの導入方法(Swift)をまとめる。0. 新しいプロジェクトを作成このステップは必要に応じて。既存のプロジェクトにadmobを入れたい場合はこのステップはスキップでOK1. SDKをダウンロードしてzipファイ...

続きを読む

【Swift】TextViewを選択状態(アクティブ/フォーカス)にする

例えば何かのボタンを押したらTextViewにフォーカスを当ててキーボードを出したい、ということがある。そんな時はbecomeFirstResponderを利用すればいい。ただ、単純にmyTextView.becomeFirstResponder()とすればいいわけではない(ようだ)。上記ではうまくいかなかったので下記のようにしたらうまくいった。NSOperationQueue.mainQueue().addOperationWithBlock({ myTextView.becomeFirstResponder()});つまり、メインスレッド...

続きを読む

【Swift】Swift + PHPでiOSから画像をアップロードする

iOSのアプリで写真を選択してそれをサーバーにアップしたいということがある。今回はSwift + PHPでこれを実装する。実はこちらのブログに詳しい方法が載っており、ご丁寧に動画まで貼り付けてある。私もこれを参考にして実装した。が、このブログのコメント欄を見ればわかるように、「できない!」という声が多い。私もかなり悪戦苦闘した。結果はまりポイントがいくつかあったので当記事を参考にしていただければと思う。まず、上...

続きを読む

【Swift】Apps that crash will be rejected と言われた時の考えうる1つの要因

「Apps that crash will be rejected」で2度もリジェクトされたが再現できず。もしやと思いiPadのシミュレータで起動してみたら再現できた。つまり、「iPhoneでは落ちないが、iPadでは落ちる」処理があるわけだ。私がやられたのはアラートの処理。Twitterでシェアするかどうかを選択させるために下記のようにコーディングしていた。これはiPhoneでは問題なく動く。が、これをこのままiPadで動かすとクラッシュするのだ。それを回...

続きを読む

【Swift】フォントは変えず、サイズだけ変える

軽くハマったのでメモ。タイトルの通り、下記の方法だとフォントのサイズだけを変えたいのにフォントの種類も変わってしまう。mylabel.font = UIFont.systemFontOfSize(28)正確には、storyboardで別のフォントに設定していてもシステムフォントに戻ってしまう。そこで下記のようにすればフォントの種類は変えずサイズのみ変更できる。mylabel.font = mylabel.font.fontWithSize(28)...

続きを読む

【Swift】ACAccountでTwitterのアカウントを指定する

iOS上でTwitterのアカウントは複数持てるので、Twitterのアカウントを使ってあれこれする時にはリストの中からどのアカウントかを指定する必要がある。一番シンプルな方法は下記。 var twAccount: ACAccount? var accountStore = ACAccountStore() func selectTwitterAccount(){ let accountType = accountStore.accountTypeWithAccountTypeIdentifier(ACAccountTypeIdentifierTwitter) let accounts = sel...

続きを読む

【Swift】UIApplicationDidEnterBackgroundNotificationが複数回呼ばれる原因

アプリが重いなと思っていたらUIApplicationDidEnterBackgroundNotificationが複数回呼ばれていた。どうやらシーンを移動して戻ってくると1つ増える様子。原因は単純でobserverが増えたから。Observerの追加はViewDidLoadで行っていた。だからシーンを移動して戻ってくるたびにObserverが増えるということ。つまり、下記のようにしてはいけない。これをするとシーンの移動をトリガーにobserverが増えてしまう。 override func ...

続きを読む

【Swift】音を鳴らす

Swiftで音を鳴らしてみる。この手のプログラムは簡単にできるようで割とはまりポイントがあったりするのでいろんなサイトをぐるぐる回って時間がかかってしまいがち。「できた」方法を下記に記す。import AVFoundation//import UIKitの下にでも書く var audioPlayer: AVAudioPlayer? func playsound(){   //この関数を音を鳴らしたい場所で呼び出して使う if let path = NSBundle.mainBundle().pathForResource("s...

続きを読む

【Swift】外をタップしてキーボードを閉じる

タイトルの通り、キーボードを開いたときにその他の部分のタップを検知してキーボードを閉じる処理。いろんなサイトにいろんな方法が書いてあったがなぜかうまくいかず。下記の方法でできたのでメモ。下記をどこかに書く。どこかとは例えばviewDidLoad()var tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "DismissKeyboard")view.addGestureRecognizer(tap)そして下記の関数を定義。 func DismissK...

続きを読む

【Swift】UITableView 複数行消す時の注意点

テーブルの行を複数消したいときにハマる可能性のあるポイントをまとめる。具体的なコードの提示は逆に混乱に繋がると思うので概念だけを記載する。下記のようなテーブルがあったとする。tabledata = [1, 2, 3, 4, 5]テーブル:|1|2|3|4|5|「tabledata」とはテーブルに表示するデータソース、「テーブル」とは実際に作成したテーブルを表す。このテーブルから5を削除したい場合、deleteRowsAtIndexPathsを使って「テーブル」から5...

続きを読む

【Swift】Custom Segueを作る方法

Segue(シーンの切り替え)のアニメーションを好きなものにできるとアプリが一気にかっこよくなる。なんだか面倒くさそうだが、実際にやってみると割と簡単なのでご紹介。こちらの記事(英文)を参考にしたが、ものすごく丁寧で不要部分もあるのでエッセンスだけを取り出すと下記のようになる。1. カスタムSegue用のファイルを作る(コードを書く部分)2. 通常のSegue設置と同じように設置する1. [File] > [New] > [File] > iOS - ...

続きを読む

【Swift】Segueが機能しない場合

例えばこんなことを実現したい場合。タイトルページ(一番初めのシーン)はじめてアプリを開いた → 設定画面へ遷移 過去にも使ったことがあるかを判別 → ゲーム画面へ遷移この場合、タイトルページで「はじめて開いたか」を判別して正しい方向へ誘導しなければならない。画面繊維はSegueを使うと思う。Segueの基本的な使い方はこの辺を見ればいいのだが「ボタンでは上手く遷移するのに、コードでは上手くいかない」とハマるケ...

続きを読む

UITextFieldがキーボードで隠れるのを防ぐ

LINEのインターフェースのように下部にテキストフィールドがあって、それをタップするとキーボードがテキストフィールドを押し上げるような動きの実装方法。ちょっとハマったポイントがあったのでそこも指摘。まずコードはこんな感じ。override func viewDidLoad() {super.viewDidLoad()NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name:UIKeyboardWillShowNotification, o...

続きを読む

iOS Dev Cente アプリリリース時に個人名を出さない方法

個人がiOSアプリをリリースする場合は個人名で出すしかないようです。個人名でアプリを出すと色々と面倒なことがあるのと、個人名のアプリだとなんとなく舐められるような気がするので、プロジェクト名やサービス名でリリースする方法は無いだろうかとあれこれ調べました。なかには「リリース時に変更できる」という記述も見つけましたが、これはどうやらデマで、そのような方法は無いという結論。基本的には登録するクレジットカ...

続きを読む

【1-6】SwiftによるiOSプログラミング基礎(スタンフォード大学)

はじめにスタンフォード大学の「Swiftで作るiOS開発入門」の講義がiTunesで配信されていることが話題になりました。私も観てみたのですが基礎から教えてくれてとてもわかりやすい。でも動画だとどうしても時間が掛かってしまうのでこのシリーズでは講義のエッセンスをまとめていきます。https://itunes.apple.com/us/course/developing-ios-8-apps-swift/id961180099シリーズ全体の目的アップルの新しいプログラム言語「Swift」でi...

続きを読む

【1-5】SwiftによるiOSプログラミング基礎(スタンフォード大学)

はじめにスタンフォード大学の「Swiftで作るiOS開発入門」の講義がiTunesで配信されていることが話題になりました。私も観てみたのですが基礎から教えてくれてとてもわかりやすい。でも動画だとどうしても時間が掛かってしまうのでこのシリーズでは講義のエッセンスをまとめていきます。https://itunes.apple.com/us/course/developing-ios-8-apps-swift/id961180099シリーズ全体の目的アップルの新しいプログラム言語「Swift」でi...

続きを読む

【1-4】SwiftによるiOSプログラミング基礎(スタンフォード大学)

はじめにスタンフォード大学の「Swiftで作るiOS開発入門」の講義がiTunesで配信されていることが話題になりました。私も観てみたのですが基礎から教えてくれてとてもわかりやすい。でも動画だとどうしても時間が掛かってしまうのでこのシリーズでは講義のエッセンスをまとめていきます。https://itunes.apple.com/us/course/developing-ios-8-apps-swift/id961180099シリーズ全体の目的アップルの新しいプログラム言語「Swift」でi...

続きを読む

【1-3】SwiftによるiOSプログラミング基礎(スタンフォード大学)

はじめにスタンフォード大学の「Swiftで作るiOS開発入門」の講義がiTunesで配信されていることが話題になりました。私も観てみたのですが基礎から教えてくれてとてもわかりやすい。でも動画だとどうしても時間が掛かってしまうのでこのシリーズでは講義のエッセンスをまとめていきます。https://itunes.apple.com/us/course/developing-ios-8-apps-swift/id961180099シリーズ全体の目的アップルの新しいプログラム言語「Swift」でi...

続きを読む

【1-2】SwiftによるiOSプログラミング基礎(スタンフォード大学)

はじめにスタンフォード大学の「Swiftで作るiOS開発入門」の講義がiTunesで配信されていることが話題になりました。私も観てみたのですが基礎から教えてくれてとてもわかりやすい。でも動画だとどうしても時間が掛かってしまうのでこのシリーズでは講義のエッセンスをまとめていきます。https://itunes.apple.com/us/course/developing-ios-8-apps-swift/id961180099シリーズ全体の目的アップルの新しいプログラム言語「Swift」でi...

続きを読む

【1-1】SwiftによるiOSプログラミング基礎(スタンフォード大学)

はじめにスタンフォード大学の「Swiftで作るiOS開発入門」の講義がiTunesで配信されていることが話題になりました。私も観てみたのですが基礎から教えてくれてとてもわかりやすい。でも動画だとどうしても時間が掛かってしまうのでこのシリーズでは講義のエッセンスをまとめていきます。https://itunes.apple.com/us/course/developing-ios-8-apps-swift/id961180099シリーズ全体の目的アップルの新しいプログラム言語「Swift」でi...

続きを読む

PR

PR

プロフィール

何でも書くman

Author:何でも書くman
思ったことや備忘録など、とりあえずなんでも書きます。IT系のことや趣味、生活に関わることなども。

ページの先頭へ戻る
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。