xyk blog

最近は iOS 開発の記事が多めです。

SwiftでON・OFFの切り替えをする円形ボタンを作る

環境: Swift3 こんな感じの円形ボタンのカスタムビューを作る。 ボタンというよりUISwitch的なON・OFFの状態切り替えをさせたい。 UIControlを継承して、状態はisSelectedプロパティで保持している。 import UIKit import PlaygroundSupport final class Cir…

Storyboardを使ってUITableViewを組み立てる場合のテンプレート(Swift3)

環境: Swift3 よく使うのでコピペ用にメモしておく。 ViewController import UIKit class ViewController: UIViewController { var items: [String] = ["foo", "bar", "hoge"] @IBOutlet weak var tableView: UITableView? override func viewDidLoad() { su…

Fastlaneでplistを更新する

fastlane: 2.3.0 Fastlaneでplistを更新する方法を調べたのでメモ。 update_info_plistというアクションを使う。 fastlane/update_info_plist.rb at master · fastlane/fastlane · GitHub app_identifierとdisplay_nameについてはアクションのパラメータに直…

XcodeをAppStoreを使わずインストールしたときのメモ

Appleアカウントでログインし、以下からダウンロードする。 https://developer.apple.com/download/ https://developer.apple.com/download/more/ xip ファイルを選択する。 リリース直後だとかなり時間がかかる。 Chrome でダウンロードし、展開しようとし…

UIViewに角丸な枠線(破線/点線)を設定する

環境: Swift3 UIViewの角を丸くした枠線を書くには以下のように書けばよい。 let roundView = UIView() roundView.backgroundColor = .lightGray roundView.layer.borderColor = UIColor.blue.cgColor roundView.layer.borderWidth = 3 roundView.layer.corn…

アプリサブミット時の輸出コンプライアンスの確認をスキップする

アプリをiTunes Connectでサブミットするときに以下のように毎回「輸出コンプライアンス」についての質問に回答する必要がある。 少しの手間だが面倒なのでこの入力をスキップする方法を調べた。 暗号化機能を含まない場合はInfo.plistにITSAppUsesNonExempt…

UIWebViewのリクエストにUserAgentを設定する

環境: Swift3 UIWebViewのリクエストにUserAgentを設定するには、リクエスト前にUserDefaultsのregisterメソッドでキー名UserAgentで値をセットする必要がある。 UserDefaults.standard.register(defaults: ["UserAgent" : "hoge"]) この時、 // これだと設…

UserDefaultsのregisterDefaultsメソッドについて

環境: Swift3 UserDefaultsのregisterDefaultsメソッドについて勘違いしていたのでメモ。 // Swift3 で registerDefaults() から register(defaults: ) に変更になった open func register(defaults registrationDictionary: [String : Any]) このregisterメ…

UserDefaults に保存されているデータをすべて表示する

環境:Swift3 UserDefaults に保存されているデータをすべて表示する for (key, value) in UserDefaults.standard.dictionaryRepresentation().sorted(by: { $0.0 < $1.0 }) { print("- \(key) => \(value)") } または if let appDomain = Bundle.main.bundle…

Firebaseでプッシュ通知したが既読数が計測されていなかった件

環境: iOS9 Firebaseのプッシュ通知機能を使い、iOS端末に向けてのプッシュ通知をしたところ、送信は問題なくできたのだが、管理画面から確認できる既読数が0にままだったので原因を調べた。 で原因だが以下ドキュメント Receive Messages in an iOS App | F…

プッシュ通知受信時に呼ばれるメソッドについて

環境: Swift2.3 前提となるCapabilitiesの設定 - Push Notifications -> ON - Background Modes -> OFF プッシュ通知受信時に呼ばれるメソッド プッシュ通知受信時に呼び出されるメソッドに 1. application:didReceiveRemoteNotification:と 2. application:…

Swiftのバージョンを調べる

ターミナルで以下コマンドswift -vを実行する。 $ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -v Apple Swift version 3.0.1 (swiftlang-800.0.58.6 clang-800.0.42.1) Target: x86_64-apple-macosx10.…

iPhoneのHTTPプロキシを設定してもオフになってしまう件

ios

環境:iOS10.1 新しいiPhoneを購入後、WifiのHTTPプロキシ設定を「手動」で行うとしたところ、入力しても保存されず、なぜかオフになってしまう現象が起きた。 どうやら前のiPhoneのバックアップから復元した場合に発生するようだ。 「このネットワーク設定を…

iPhoneのUDIDを調べる方法

Xcode(8.0) で調べる Window -> Devices and Simulators からiPhoneデバイスを選択、identifierの部分が UDIDになる。 iTunes で調べる 初期表示はシリアル番号となっているがその辺りをクリックすると表示項目が切り替わり、UDIDが現れる。 シリアル番号 ->…

いつも設定するAppearanceのメモ

環境: Swift2.2 iOS8以降対象 いつも設定している Appearance のコピペ用メモ。 以下を AppDelegate で呼ぶ。 mainColor は extension で独自に設定したもの。 private func setupAppearance() { // アプリケーション全体のtintColor設定 self.window?.tintC…

SwiftでTupleとCaseを組み合わせて使う

環境: Swift2.2 タプルとcaseを組み合わせて使うと便利だったのでメモ。 Switch(case)文で使う オプショナル型な複数の値の組み合わせで場合分けしたい場合に使う。 また値はアンラップして取り出して変数にバインドする。 ポイントはcase部分で「?」をつけ…

MySQLに街区レベル位置参照情報のCSVデータをインポートする

環境 Mac MySQL Server version: 5.7.13 位置参照情報ダウンロードサービス http://nlftp.mlit.go.jp/isj/ 今回はこちらから東京都の大字・町丁目レベルのデータをダウンロードする。 13000-09.0b.zipというファイルがダウンロードされる。 これを解凍すると…

LaunchScreen.storyboard に貼り付けた画像が表示されない

シミュレータでは表示されるが、実機だと表示されない。 バグらしい、とりあえず自分の場合は iPhone 側の再起動で表示されるようになった。 Launch Storyboard not showing image when projec... | Apple Developer Forums https://forums.developer.apple.…

SwiftでDEBUG Macroを使う

環境: swift2.2 Xcode7.3.1 Swiftで以下のようなDEBUG Macroを使いたい。 #if DEBUG print("DEBUG") #elseif STAGING print("STAGING") #else print("ELSE") #endif Objective-C の場合はPreprocessor Macrosに設定していたが Swift ではOther Swift Flagsの…

SwiftでオブジェクトをNSUserDefaultsに保存する

環境:swift2.1 NSUserDefaultsにオブジェクトのまま保存したかったが、保存できるオブジェクトはNSArray, NSDictionary, NSString, NSNumber, NSDate ,NSDataに限られていた。 調べたところ、オブジェクトをNSDataに変換できることがわかった。 NSDataにで…

UIImage と UILabel を合成する

ios

環境:Swift2.1 UIImage と UILabel を合成する方法について。 UIImage をセットした UIImageView を作成、そしてそれに UILabel を addSubview する。 UIImageView(UIView) が持つ CALayer プロパティのrenderInContextメソッドでグラフィックコンテキスト…

単色で塗りつぶした UIImage を生成する

ios

指定した UIColor の単色で塗りつぶした UIImage を生成したい。 ※ 追記済み Swift5 iOS10.0 から追加された UIGraphicsImageRenderer を使用する。 A. UIColor の Extension に追加 extension UIColor { func image(size: CGSize) -> UIImage { return UIGr…

UIView が持つ描画・レイアウト更新系のメソッドメモ

ios

setNeedsLayout() 現在の子Viewの配置を無効にし、次の更新サイクルで配置し直すようにする(メインスレッドから呼ぶこと)。 このメソッドは即時の更新を強制するものではなく、次の更新サイクルを待つので、更新要求を書き留めたらすぐに処理を戻す。 これを…

UIImage と NSData の相互変換

ios

環境: Swift2.0 UIImage -> NSData UIImagePNGRepresentation関数、またはUIImageJPEGRepresentation関数を使う。 関数定義 // return image as PNG. May return nil if image has no CGImageRef or invalid bitmap format public func UIImagePNGRepresenta…

同じiOSバージョンのシミュレータが重複して表示されてしまう場合の解決方法

ios

環境: Xcode7.0.1 Beta 版と GM をインストールしたら重複して表示されるようになってしまった。 iOSシミュレータを削除するには Xcode > Window > Devicesから削除できる。 削除したいデバイスがたくさんあって個別に面倒な場合は ~/Library/Developer/Core…

iOS シミュレータ・アプリのディレクトリの場所

ios

環境: Xcode7.1 アプリデータのディレクトリを調べる 例えば iOSシミュレータにインストールした、あるアプリのDocumentsディレクトリは以下のようになる。 ~/Library/Developer/CoreSimulator/Devices/CC8FA744-B3C2-4689-839F-33B504F6168A/data/Container…

iOS でファイル保存、読み込み

ios

環境: Swift2.0 アプリ内にデータを保存する場合、どこに保存するのかを調べた。 だいたい以下のディレクトリ(またはこれらの中に作成したサブディレクトリ)のどれかに保存することになるようだ。 Documents/ Library/ Library/Application Support/ Library…

Carthage を使ってライブラリを管理する

ios

環境: Xcode 7.0.1 Swift2.0 Carthage(カーセージって読むみたい)というライブラリ管理ツールを使ってみた。 CocoaPods と比べると ・CocoaPods では Static Library のlibPods.aを静的リンクしていたが 、Carthage はxcodebuildコマンドを使ってビルドし…

Git を理解するための濃い記事まとめ

git

後でまた見返したい Git を理解するための濃い記事まとめ。 コンセプトから理解するGitコマンド from ktateish www.slideshare.net koseki.hatenablog.com koseki.hatenablog.com d.hatena.ne.jp ja.astahblog.com 見えないチカラ: 【翻訳】Gitをボトムアッ…

iOS9対応メモ

環境: Xcode7 GM iOS9 対応で行った作業メモ。 App Transport Security(ATS)対応 HTTPS 接続にする必要あり。今回はとりあえずHTTPを許可するようにInfo.plistに以下の手順で追加する。 NSAppTransportSecurityを Dictionary で追加。 その下でNSAllowsArbit…