swift

swift4 アプリのバージョン番号とビルド番号取得

// バージョン番号 Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") // ビルド番号 Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString")参考 https://qiita.com/arthur87/items/802d17387ae46fb44fc2

rails actioncable + swiftでwebsocketのhello world

iOSでWebSocketを少し試す必要があったのでそのときの手順をまとめておく。サーバー側はRails5.2のAPIモードでActionCableを使う。railsインストール $ bundle exec rails new ac_test --api Channel作成 channel作成 $ ./bin/rails g chnnel chatChannelは…

xcode カスタムURLスキームを本番と開発アプリで切替える

今回やりたかったことはカスタムURLスキームの設定。ブラウザから「myapp://」等のリンクをクリックしたときにアプリを起動させたいとかの場合に設定するものです。 アプリ開発していて、開発と本番アプリで別の名前で設定したいと思いやり方を調べたのでメ…

migrate swift4.0 to swift4.2

swift4.0 から swift4.2 への修正内容メモしておく UIKeyboardWillShow UIResponder.keyboardWillShowNotification UIKeyboardWillHide UIResponder.keyboardWillHideNotification UIControlEvents UIControl.Event UIEdgeInsetsInsetRect(rect, padding) re…

Swift LUExpandableTableViewを使って折りたたみ可能なUITableViewを実装

こんな感じのありがちなUI。ライブラリを使わずに自前で実装する方法もけっこう書いていただいている人がいて実装することはできたのだが、テーブルのレコード数が増えると開閉したときのスクロール位置がガタガタ。自分の実装方法に問題があるかもしれない…

Swift 一定以上スクロールしたらタブの位置を固定する(SwipeMenuViewControllerを使う)

やりたいことはこちらのページに書かれていたようなこと https://techblog.zozo.com/entry/scroll_tab_pagehttps://github.com/yysskk/SwipeMenuViewController SwipeMenuViewControllerというライブラリを使って試してみたViewController.swift import UIKi…

Swift UIViewを再描画

autolayout使わない方法メモ と言ってもframeをセットしなおしてるだけ import UIKit class ViewController: UIViewController { var wrapper: Wrapper! class Wrapper: UIView { var message = UILabel() required init?(coder aDecoder: NSCoder) { super.…

Swift UITableViewのセクションヘッダーをカスタマイズする方法メモ

やることは以下 ・カスタムUIViewの実装 ・viewForHeaderInSectionとheightForHeaderInSectionメソッドの定義viewForHeaderInSectionはカスタムViewを返す heightForHeaderInSectionはカスタムViewの高さを返す テーブルセルのカスタマイズと考え方は同じ カ…

Swift4.2 UITableViewひな型

コピペ用AppDelegate.swift class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? var navigationController: UINavigationController? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOp…

Swift 動画からキャプチャ画像を抽出する

動画ファイルから1秒単位でキャプチャ画像を生成するサンプルをメモしておく import UIKit import AVKit class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { var picker = UIImagePickerControlle…

Swift Dateで日付のみのリスト作成

大した話じゃないけどDateFormatterは入力と出力でそれぞれ用意すると考えるとなんとなくわかりやすいと思った start = "2018-01-01" end = "2018-01-31" // 入力文字列のフォーマット var inputFormatter = DateFormatter() inputFormatter.dateFormat = "y…

Swift Alamofire + Codableでapiリクエストでの最低限必要そうな処理まとめ

はじめに アプリ開発でWebAPIにリクエストしてレスポンスを画面に表示したりデータを更新したりありがちな処理をまとめておく。やりたいことは主に以下 ・APIへリクエスト(Get、Post、Patch、Delete) ・APIのレスポンスからCodableなクラスのインスタンス…

Swift UITextField textFieldShouldReturnが呼ばれない

UITextFieldDelegateもちゃんと実装したのになぜか呼ばれなくてハマった誤 func textFieldShouldReturn(textField: UITextField) -> Bool { return true }正 func textFieldShouldReturn(_ textField: UITextField) -> Bool { return true }昔のソース貼り付…

Swift TagListViewでタグ入力UI実装

はじめに 今回作りたかったのはこんなありがちなUIhttps://github.com/ElaWorkshop/TagListView このライブラリを使ったら簡単に実装できた。使い方簡単にメモしておくハマりポイントはあまりなかったが、タグを追加していったときに高さの取得方法がわから…

Swift Carthage 使い方メモ

carthage自体のインストールは済んでる前提で、その後のライブラリインストール手順についてメモしておく。手順はざっくり以下 1. CartfileにレポジトリURL追加 2. carthage update コマンドでライブラリインストール 3. xcodeからライブラリ追加 4. Run Scr…

Swift codableなclass(object)のプロパティに変数で動的にアクセスする

あまり応用シーンはなさそうだけど今回やりたかったことは user["id"]、user["name"]みたいなかんじでプロパティにアクセスしたかった。やりたかった理由はObjectから特定のプロパティを表示する画面を作りたかった。こんなクラスがあってプロパティがたくさ…

Swift LINEぽいメッセージアプリの入力UIをつくったのでメモ

はじめに かなり前にこちらでメッセージを表示する部分の吹き出しの作り方をメモした。 http://kimagureneet.hatenablog.com/entry/2015/09/19/005407今回はメッセージ入力部分のUIの作り込みの方法をメモ。こんな感じのものを作りたかった。 やりたいことは…

Swift ImageSlideshowのPagerの色、位置を変更する

https://github.com/zvonicek/ImageSlideshow こちらのライブラリの話デフォルトだと画像とページャーガ重なっていて見づらいので、色を変えて画像の下にくるようにする var slideShow = ImageSlideshow() let pager = UIPageControl() pager.pageIndicatorT…

Swift UITableViewですぐ忘れる細かいことまとめておく

セルの罫線を消す tableView.separatorStyle = .noneセルの罫線の隙間をなくす UITableView.appearance().separatorInset = UIEdgeInsets.zero空のセルは表示しない tableView.tableFooterView = UIView(frame: .zero)セルをタップした時の色がかわらないよ…

【xcode】プロジェクト名を変更するのが思ったより面倒だったので手順まとめておく

はじめに アプリ名とかを仮のまま開発を進めて途中でアプリ名が決定。 プロジェクト名などが旧名称のままだと気持ち悪いのでプロジェクト名を変更したかったのでその時の手順をまとめておきます。今回は以下の名前をで変更します。 変更前:SampleOld 変更後:…

【swift】UILabelの高さを計算して動的に変更(調整)する

よくやってるつもりだったけど意外と整理できていなかったので整理 var myLabel = UILabel(); // 最大行数を指定(0は無制限) myLabel.numberOfLines = 0; // 表示するテキストをセット myLabel.text = "テキスト・・・"; // セットした文字からUILabelの幅と…

【swift】iosで画面の回転を検知してUITableViewを再描画する

はじめに 今回やりたかったのは画面一杯にUITableViewをセット。 端末の向きが変更されたら画面サイズに合わせてUITableViewの幅と高さを更新。ということなにも対応しないと縦向きから横向きにしたときにテーブルの幅が半分くらいになってしまうので対応が…

【swift】SWTableViewCellでボタンとテキストが重なったときの対応メモ

テーブルビューのセルをスワイプしたら削除ボタンが出てくるメールアプリみたいなUI。 これを簡単に実現できるライブラリでSWTableViewCellというのがあった。で、使い方自体はわかりやすくて簡単だったんだけどUITableViewCellの中身がスライドしないで 削…

【swift】uiscrollviewを更新する方法メモ

はじめに 今回やりたかったことは以下 ・UIScrollViewの中にUILabelをもつ ・UILabelのテキストにはAPIから取得した値をセットする ・テキストの文字数が多いのでUIScrollViewの高さをセットしてテキスト全体がみれるようにする今まではUITableViewのヘッダ…

【swift】uitableviewで読込中indicatorを表示する方法メモ

はじめに 今回やりたかったのは、APIから取得した値をテーブルビューにセット。 テーブルビューの1番下までスクロールしたら読込中のクルクルインジゲーターを表示。 というまぁありがちなやつで、やりかた調べたらここにありました。 http://d.hatena.ne.jp…

【swift】iOSでWebViewのjavascriptと連携する方法メモ

はじめに 以下のような問題があってWebViewの使用を検討 ・開発中のアプリのある画面のデザインがけっこう複雑で実装するのに時間かかりそう。 ・HTML、CSSで実装するとそんなでもなさそう。問題点としてはこの画面でのユーザー操作によってアプリの他の画面…

【xcode】「no such module afnetworking」対応

久々にxcode作業 xcodeのアップデートしたらバージョン8.2になってた。 で、swiftのバージョンも3.0.2にで、cocoapodsでAFNetworkingをインストールして以下を書こうとすると「no such module afnetworking」という経緯でした import AFNetworking漠然とxcod…

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

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

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

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

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

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