iPhoneアプリ開発

【swift】uitextviewで文字数を制限したテキストコピーを実装

はじめに uitextviewにコンテンツを表示。コンテンツの内容はコピー可能だけど全文を一括ではコピーできないようにしたい ということでした実装手順としては ・uitextviewのUIMenuControllerを無効にしてコピーできなくする ・文字数制限してコピー可能なUIM…

【swift】uitextviewの選択範囲の文字列を取得する方法

今回やりたかったことはタイトルのとおりですが、 uitextviewに表示しているテキスト中でユーザーが選択状態としている部分の文字列を取得するということでしたswift let location = textView.selectedRange.location let length = textView.selectedRange.l…

【swift】RealmSwiftとObjectMapperでローカルDBを使う方法メモ

はじめに 今回作りたかったものは辞書アプリみたいなイメージで 書籍のカテゴリーが一覧表示されていて選択すると紐づく書籍がリスト表示されるだけやりたかったことは以下 ・辞書データはサーバーに保存 ・できるだけオフラインでも使えるようにしたいで、…

【swift】エラーメモ clang: error: linker command failed with exit code 1 (use -v to see invocation)

ついさっきまで同じビルドできていたのに突然このエラーが出る場合があります。 特に開発始めたばかりのときはビルドが通らないだけで一苦労です自分の場合は、「command + shift + k」で1度クリーンしてから再度ビルドすると大抵解決していると思います cla…

【swift】fabricのcrashlyticsでクラッシュレポートが送信されなかった時の対応メモ

はじめに サンプルアプリを作って、マニュアルの手順通りに導入すると上手くいくのに携わっていた案件のアプリに入れた際になぜか上手くいかなかった。 そのときの対応方法をメモ 実装 AppDelegate.swift import Fabric import TwitterKit import Crashlytic…

【ios】アプリ開発〜リリースまでのまとめ

はじめに アプリ開発してお客さんに確認していただいて、アップルに審査してもらうまでにやっとたどり着いたので備忘録としてメモイメージとしてはこんな感じで、webアプリとか受託開発するとよくある形だと思われます 環境 アプリを確認する人 開発 開発者 …

【ios】Universal Linksを実装する - 実装方法

はじめに 前回書いた概要の続きです。手順としては以下 Apple Developer ・「Identifiers」の「App IDs」より「Associated Domains」がEnabledになっていることを確認(または設定) その際に、アプリの「ID」と「Prefix」もあとで使うのでメモしておく※ここ…

【ios】Universal Linksを実装する - 概要とか

はじめに 今回やりたかったことは、あるurlへアクセスした際に ・未インストールならAppStoreへ誘導 ・インストール済であればアプリを起動(起動時の画面も指定したい)ios8以下では、ココとかの記事の通り、 アプリにカスタムurlスキームを設定して、html…

【swift】カスタムUIView上のボタンが押せなくてハマったときのメモ

はじめに 久々にこんなにハマりました、、、 共通で使い回すために作るカスタムUIVIew上のボタンを押してもウンともスンともいわなかったことでしたコードは以下のような感じで、なんてことはなくボタンを持ってるだけのUIViewをaddSubViewして、見た目的に…

【swift】api通信処理を共通化/エラー処理もちゃんとやる

はじめに 以前、こちらで同じようなことを書いたのですが。 そのときはまだswiftやりたてというのとエラー処理とかちゃんと考慮できてなかったので今回もう1度ちゃんとまとめてみようと思いました実装したい機能としては以下 >サーバーからのレスポンス arr…

【swift】AppDelegateのopenURLが呼ばれなかったときの対応メモ

はじめに 「example://」のような形でアプリを起動したときにAppDelegateのopenURLメソッドが呼ばれませんでした。 ちなみに、アプリを起動した状態でブラウザから起動すると期待通り呼ばれました。原因としては、AppDelegateのdidFinishLaunchingWithOption…

【swift】AFNetworkingでタイムアウト処理メモ

やりたかったこと AFNetworkingを使っていて、タイムアウトまでの時間を計ってみるとちょうど1分間でした。 1分間待つのはちょっと長いかなと思って、この時間を設定する方法を調べてみましたAFNetworkingの中をtimeoutでgrepしてみると、requestSerializer…

【swift】シュミレータービルドの方法メモ

はじめに Facebookアプリに申請を出す際にアプリの提出が必要だとのこと。 が、現時点でアプリはリリース前でアプリを実機で動作確認する際にはUDIDをプロビジョンファイルに含めて、デプロイゲートよりインストールしてもらう形で進めてきました。で、これ…

【swift】UIBarButtonItemを右寄せする方法メモ

はじめに 今回やりたかったのは、こんな感じ。 UIDatePickerの上にUIToolbarをおいて、UIToolbarの中にUIBarButtonItem(決定ボタン)をおいて右寄せにする 実装 UIBarButtonItemのbarButtonSystemItemをUIBarButtonSystemItem.FlexibleSpaceに設定して これ…

【swift】UITableViewをタップされたらキーボードを隠す(けど画面遷移はしない)方法メモ

はじめに タイトルがわかりずらいんですけど、やりたかったこととしては以下画面としては、UISearchBarがあってUITableViewがあって、UISearchBarを編集中に画面をタップしたらキーボードを閉じる。 けど、素直に実装するとUITableViewのセルがタップされた…

【swift】ios9でUITableViewCellの罫線を左端まで引っ張る方法メモ

はじめに UITableViewのデフォルトだと、セル間の罫線が画面左から少し離れたところからスタートしているんですね。 今回やりたかったことはこれを画面の左端からスタートさせることです 実装 で、検索するとこの辺に答えっぽいのがあったのですが、自分のア…

【swift】UITabBarControllerにスライドメニューを追加する方法

はじめに スライドメニューで検索すると色々出てきたのですが、今回は SlideMenuControllerSwiftというライブラリを使わせていただきました。紹介されている使い方をそのままでした。 Podfileに以下を追加して、podinstallするとインストール完了ですPodfile…

【swift】配列を結合する方法メモ

はじめに 今回やりたかったのは以下のようなこと // 2つの配列 var array = ["test1", "test2"] var array2 = ["test3", "test4"] // 1つの配列に結合したい var array3 = ["test1", "test2", "test3", "test4"] 実装方法 // 2つの配列 let array = ["test1"…

【swift】ViewControllerのdeinitが呼ばれなかったときの対応メモ

はじめに pcにiPhoneをつないでxcodeでcpuやらメモリの使用量やらをリアルタイムに見ることができるのでそれをしました。 画面をひらくたびにメモリ使用量が増えるはわかるんですけど、UiNavigationControllerの戻るとかやってもメモリが減らなくておかしい…

【swift】TTTAttributedLabelでSizetoFitとSizeThatFitsが効かなかったときの対応メモ

はじめに 今回やりたかったのは、 TTTAttributedLabelで生成したラベルにnumberoflinesを設定して高さ可変の対応したときにハマったのでメモしておきます。 解決方法 通常のUILabelだと、以下のコードみたいなかんじでいけたのですが今回はいけませんでした …

【swift】ネットワーク通信状況でのエラー処理を実装する方法メモ

はじめに アプリの場合、インターネットとつながっていない場合の処理を考慮する必要があります。 僕の場合、ある程度アプリを作ってからこのことを考え始めましたが、本来であれば最初から頭にいれて開発を進めるべきだったんですね。で、どうするのがいい…

【swift2】urlを正規表現で解析する方法

はじめに 今回やりたかったのは、カスタムurlスキーマから起動されたときに指定されたurlによって特定の画面を開くとということ。 カスタムurlスキーマについてはあとでまとめます。今回はurlを正規表現で解析する部分をメモします url解析用の関数 たぶん、…

【swift】吹き出しでLINEぽいメッセージアプリのUIを作ったのでメモ

はじめに 今回やりたかったのはこんなかんじの画面です。iosで吹き出しのライブラリとか実装方法とか検索するとちょいちょい出てくるのですが、ちょっと難しかったりで結局自分で実装することにしました。最初は吹き出しの画像を用意してそれを背景にしたUIL…

【swift】UIRefreshControlが動かなくてハマったことメモ

はじめに 今回もまさに超初心者のハマり方をした。 やりたかったのはUITableViewでリスト表示してあるデータを1番上を引っ張ったら最新の情報に更新するっていう 1番最初にみんなやりそうなやつです。Pull To Refreshとかいうのかな 実装方法 けっこういろん…

【swift】UISearchBarのアイコン(虫眼鏡の)を非表示(というか削除)にする方法メモ

やりたかったことはタイトルのとおりなのですが、地味に時間かかりました // UISearchBarを生成 var searchBar: UISearchBar = UISearchBar() for subview in searchBar.subviews { for subview2 in subview.subviews { if var _subview2 = subview2 as? UIT…

【swift】初案件でつかったライブラリまとめ by sns系アプリ

はじめに はじめてアプリ案件を経験していろいろありましたが、実際につかわせていただいたライブラリをメモしておきます。 経験者の方からしたら使いすぎだろっていわれそうですが、、、僕みたいな素人でもつかえたのでおなじような初心者のかたでもつかえ…

【swift】ios7対応でしたことをメモ

はじめに ios8のことしか考えずに開発を進めて、ios7もまだまだ利用者がいるので当然対応してあるはずですよね? ということで即席で対応中です。まだ途中なんですけど、とりあえずこれをやったら形になったということをまとめておきます ・UINavigationBar…

【swift】無限スクロールするUItableViewを実装する方法メモ

はじめに 今回やりたかったのは、またありがちなこんな感じの画面です。 といってもやりたかったのは、こちらで書いた内容をコードレベルにしたもので。 【swift】uitableviewが重いときに対処すべき2つのこと - とりあえずphpとかUITableViewを使うときにパ…

【swift】uitableviewが重いときに対処すべき2つのこと

はじめに 今回やりたかったのは、twitterのタイムラインみたいな無限スクロールを軽くしたいということ。今までも重いのは知ってたんだけど放置してきましたが、いよいよ開発も終盤にさしかかってきてパフォーマンスやら細かい部分も修正しないとならなくな…

【swift】カスタムUIView・カスタムUITableViewCell作り方メモ

自分用にメモ UIView、UIButton、UIImageView・・・ class CustomView: UIView { override init(frame: CGRect) { super.init(frame: frame) } required init(coder aDecoder: NSCoder) { super.init(coder: aDecoder) } } UITableViewCell class CustomTabl…

【swift】fabricでtwitter投稿する方法メモ

はじめに まず事前準備でやることは以下 1. こちらのtwitter公式のfabricにユーザ登録(返信メールが遅かったりサイトが全部英語だったり地味にはまった)2. fabricからsdkをダウンロードしてインストール3. sdkをプロジェクトに組み込む(xcode)4. twitter…

【swift】UIButtonひな型

アプリ開発してると、サンプルアプリ作ってみてうまくいったら開発中のアプリに組み込むっていうながれが多いんですけど、僕の場合はサンプルアプリつくるさいにとりあえずボタンをおくことが多いんですが、そのボタンをおくのに過去のソースから探して・・…

【swift】UITabBarControllerひな型

これも毎回過去のコードをみてるのでひな型をメモしておきます。 UITabBarController配下にUINavigtionControllerを配置する形です。AppDelegate.swift class AppDelegate: UIResponder, UIApplicationDelegate { ・・・ func application(application: UIAp…

【swift】UITabBarController・UINavigationControllerにタイトルをつける方法メモ

今回はまった状況としては、UITabBarController配下にUINavigationControllerを並べた場合です。TabBarController.swift class TabBarController: UIViewController { override func viewDidLoad() { super.viewDidLoad() uinavigationcontroller1 = UINavig…

【swift】RSKImageCropperを使って画像のトリミング

はじめに 今回やりたかったのは以下の画像のこんな感じのUIです ユーザがアップロードする画像の縦横比が決まっている場合を想定しています。 ユーザのアイコン画像だったら正方形、ページ上部のヘッダー画像だったら縦横比 = 2:1とかです で、最初自作して…

【swift】画像のリサイズとトリミングする方法メモ

画像処理とか座標とか苦手なのですが、必要に迫られて関数を作ったのでメモしておきますリサイズ func resizeImage(image: UIImage, width: Int, height: Int) -> UIImage { var ref: CGImageRef = image.CGImage var srcWidth: Int = CGImageGetWidth(ref) …

【swift】UILabelに下線を引く方法メモ

簡単にできると思ったけど意外とはまったのでメモしておきます。 attributedTextで色々設定できそう。 // UILabelを作成 var label: UILabel = UILabel() ・・・ var text: String = "今日はいい天気だ。明日は雨だ" var attributeText = NSMutableAttribute…

【swift】ログイン・ログアウト処理

はじめに 今回やりたかったのは、ありがちなログイン・ログアウト処理。 初回起動時にログイン画面を表示。1度ログイン後は次回起動時にもログイン画面は表示しないということ。方法としてはuserDefaultsという端末のストレージにログイン状態を保存しておく…

【swift】画面に非表示でpushViewControllerする方法

はじめに やりたかったことを文字にすると非常にわかりずらいのですが、以下のことになります1. 画面Aを表示 2. 画面B(入力画面)へ遷移 3. 2.からの戻るボタンで画面C(一覧画面)へ遷移わかりずらいですが、表示してない画面に戻るということになります …

【swift】UITextViewでリアルタイム文字数チェック

はじめに やりたかったのはタイトルの通り。javascriptでやるような感覚でいけました ひな型的に自分用にメモしておきます 実装 class SampleViewController: UIViewController, UITextFieldDelegate { var textField: UITextFiled = UITextField() var labe…

【swift】popViewControllerAnimatedで複数前の画面に戻る方法メモ

はじめに 今回やりたかったことは、uinavigationcontrollerで1つ前の画面でなくて複数前の画面に戻ることでした。 で、設計にも関わるのですが、その画面に戻る前にプロパティなどを設定してからもどるということでした。 実装 // 1つ前のviewContorollerな…

【swift】画面遷移でパラメータを引き継ぐ方法

やりたかったこと webというか(php)でいえば、$_GET、$_POSTでパラメータで画面間でパラメータを引き回す方法をメモ。 実装 たいていの画面で画面遷移はあるので、BaseViewControllerみたいのをつくって共通の関数を用意しておくと楽だとおもいましたAppDele…

【swift】kvoパターンを使うためにmodelクラスをつくる

はじめに 今回やりたかったのはapiからデータを取得 そのデータをアプリ内で使いまわしつつデータの更新があればapiも叩いてサーバサイドにも反映ちょっとわかりずらいけどやりたいことはこんな感じです 作りたい画面 一覧画面 ・apiからデータを取得してテ…

【swift】UITableViewひな型(私用)

最近僕がつくってる画面はほぼほぼテーブルビューをつかってるので、毎回過去のコードをコピーして不要なとこを削除してっていう作業を毎回しています。 なにげにこれだけでも10分くらいかかってるかも、、、 ということで自分用ですが、ひな型ですテーブ…

【swift】アルバムから選択した画像をリサイズしてサーバーにアップロードする

はじめに 今回作ってみたサンプルのイメージはこんなかんじです。 使ったライブラリやキーワードとしては以下です ・Photos(アルバムへのアクセス) ・CoreImage(画像のリサイズ) ・Net(ファイルアップロードでMulti-Partリクエスト) ・SVProgressHUD(…

【swift】uitabbarにポップオーバーするメニューを表示する方法

はじめに また、ちょっと需要なさそうな内容なのですがやりたかったことは以下のような形です。uitabbarのタブをクリックすると画面遷移するのではなくて、ポップオーバーでメニューを表示するということ 実装方法 ポイントは 1. UITabBarControllerDelegate…

【swift】Dictionaryの配列を使う方法メモ

はじめに また基礎的なことです。 やりたかったこととしては、APIから取得した値を連想配列(Dictionary)の配列に代入といういかいれることでした 実装 // var response = APIなどから取得してきた値 var result = [Dictionary<String, AnyObject>]() if var array = response as</string,>…

【swift】実行中のviewController名を取得する方法メモ

また素人丸出しのメモです。が、やりかったこととしてはアプリの画面が増えてきてどの画面がどのファイルかわからなくなってきた、、、 根本的にちゃんと命名規則やら整理しろってことになるのかもしれませんが、、、BaseViewController.swift class BaseVie…

【swift】ページ内リンクを実装する方法

はじめに やりたかったことはHTMLで言えばページ内リンクで、さらにアニメーションのつき(スクロールしながら)で行うことでした僕の場合、縦長のページは必ずと言っていいほどUITableViewを使っているので、これを使っての実装方法メモになります 実装方法 V…

【swift】addSubviewしたviewがずれたときの対処メモ

はじめに 結論からいうと回避策はわかったので対処はしたのですが、原因がわかっていません、、、現象としては、viewDidLoadでaddSubviewしたviewが縦にずれる(画面からはみでる) しかし、pushViewControllerで別ページへ遷移後に戻ってくるとずれることなく…