Swift で NSAttributedString 内の部分文字列を別の文字列に置換する方法

環境: Swift3 StroyBoard 上で UILabel の文字列を Plain ではなく Attributed で設定し、その文字列内の PlaceHolder を後から別の文字列に置き換えたいケースがあり必要になった。 NSMutableAttributedString#replaceCharacters(in:with:)メソッドを使用す…

UITextView を使ってテキストの一部をハイパーリンク化する

環境: Swift3 iOS10 UILabel ではなく UITextView の attributedText に NSLinkAttributeName をセットすることで簡単にできた。 クリック時にデフォルトでは Safari が起動して設定したURLのページが表示された。 クリック時の挙動を変更したい場合は UITex…

URL Scheme の追加と Configuration によって変更する方法

環境: Xcode8.3.2 Swift3 URL Scheme の追加 Target -> Info -> URL Types から URL Scheme を追加する。 まだ何も追加していない状態。 +ボタンを押して以下を追加した。 identifier: com.example.myapp URL Schemes: myapp Info.plist に URL Types の項…

View の Auto Layout によるアニメーションを無効にする

環境: Swift3 あるViewのSubviewのレイアウトをAuto Layoutで行った時にアニメーションしながら配置された。 この時のアニメーションは不要なので無効にする。 やり方はSubviewの配置が行われるlayoutSubviewsメソッドをオーバーライドして以下のようにアニ…

角丸なUIViewに角丸な影をつける

環境: Swift3 角丸なUIViewに角丸なドロップシャドウをつけるやり方。 プレイグラウンドで確認。 import UIKit import PlaygroundSupport let baseView = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 200)) baseView.backgroundColor = UIColor(r…

CGPath の変化をアニメーションさせるサンプル

環境: Xcode8.2.1, Swift3 CGPath の変化をアニメーションさせる方法を試した。 気をつける点としては変更前と変更後のパスの数を同じにしておくこと。 import UIKit import PlaygroundSupport class SquareButton: UIControl { let pathLayer = CAShapeLaye…

UIScrollView で現在のページ数を取得する

環境: Xcode8.2.1, Swift3 UIScrollViewのisPagingEnabledプロパティを true にすると、ページ単位のスクロールが可能になる。 このときに現在のページ数を求める方法についてメモ。 ページングは横スクロールの場合なら UIScrollView のcontentOffset.xがUI…

UIScrollView の keyboardDismissMode を設定してドラッグ時に自動でキーボードを閉じる

環境: Xcode8.2.1, Swift3 UIScrollView 上に UITextField / UITextView を乗せている場合はkeyboardDismissModeプロパティを設定することで自動でキーボードを閉じることができる。 Storyboardの場合 コードの場合 // デフォルト設定。UIScrollView をドラ…

UIScrollViewDelegate について

環境: Xcode8.2.1, Swift3 UIScrollView のドラッグによるスクロール時に呼ばれる UIScrollViewDelegate の順番 // MARK: - UIScrollViewDelegate // any offset changes // スクロール中は常に呼ばれる func scrollViewDidScroll(_ scrollView: UIScrollVie…

UIScrollView の Bounce 設定について

環境: Xcode8.2.1, Swift3 UIScrollView の Bounce 設定のパラメータが3つあるが、これらの違いについて調べた。 Storyboard 以下がデフォルトの設定 コード // UIScrollView // default YES. if YES, bounces past edge of content and back again open va…

Storyboard 上で UIScrollView を AutoLayout を使って設定する

環境: Xcode8.2.1, Swift3 Storyboard 上で UIScrollView を AutoLayout を使って設定する方法について。 ちょっとハマったのでメモ。 ビューの階層構造は UIViewController.view -> UIScrollView -> UIView とする。 UIScrollView の制約 UIScrollView の制…

SwiftでAVAudioPlayerを使ってサウンドファイルを再生する

環境: Swift3 前回はAudioServicesPlaySystemSoundでサウンドファイルを再生したが、今回はAVAudioPlayerを使って再生する例。 AVAudioPlayerのインスタンスは強参照する。 import AVFoundation var audioPlayer: AVAudioPlayer? func playSound() { do { se…

Swiftで短いサウンドファイルを再生する

環境: Swift3 今回はpico.mp3という効果音ファイルがあり、それを再生する例。 まずは、このファイルをXcodeのプロジェクトに右クリックのAdd Files to **から追加する。 TARGETのBuild Phases->Copy Bundle Resourcesに追加したファイルが含まれていること…

UICollectionViewで縦横両方向にスクロールさせる

環境: Swift3 コレクションビューで縦横どちらにもスクロールさせることはできるか調べてみた。 どうやら基本的には縦横どちらかの方向にしかスクロールできないようだ。 コレクションビューではUICollectionViewLayoutを継承したクラスでレイアウトを管理す…

Font Awesome を Xcode で使用する

環境: swift3 fontawesome.io FontAwesome をXcodeにカスタムフォントとして取り込んで使用する方法。 以下からFontAwesome.otfをダウンロードする https://github.com/FortAwesome/Font-Awesome/blob/master/fonts/FontAwesome.otf Xcode のプロジェクト内…

mitmproxyメモ

インストール homebrewからインストールすると古いバージョンがインストールされたので https://github.com/mitmproxy/mitmproxy/releases こちらから最新のバージョンv1.0.2のバイナリmitmproxy-1.0.2-osx.tar.gzをダウンロードした。 以下、実機端末で確認…

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/more/ xip ファイルを選択する。 リリース直後だとかなり時間がかかる。 Chrome でダウンロードし、展開しようとしたところ 「アーカイブ”Xcode_8.2.xip”は…

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

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

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

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

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 からiPhoneデバイスを選択、identifierの部分が UDIDになる。 iTunes で調べる 初期表示はシリアル番号となっているがその辺りをクリックすると表示項目が切り替わり、UDIDが現れる。 シリアル番号 -> UDID -> ECID -…