String でひらがなの「が」と「か」+「濁点」は等価か? の実験メモ The test for Equatable of precomposed characters … という事で答えは true 厳密な区別が必要ない場合はカジュアルに等価比較して良さそう。
Xcode 12 への移行はまだ先の予定だけど取り敢えず iOS 14 で動作確認・修正作業をしたいなんてケースがある。 そこでタイトルの「Xcode 11 で iOS 14 Simulator を使用する」これができるらしい。 stackoverflow.com 手順 Xcode 12 付属の iOS Simulator を…
iOS 13でOCRに使えるテキスト認識のAPIが登場。 使えるRevisionは1。iOS 14でRevision 2が登場した。 @available(iOS 13.0, *) public let VNRecognizeTextRequestRevision1: Int @available(iOS 14.0, *) public let VNRecognizeTextRequestRevision2: Int …
検証環境 Xcode 11.4.1 iOS+ヒラギノ+UILabel とか UIButton でググると過去の UIKit での問題が参照できます。 この問題は SwiftUI でも発生します。 まずサンプルとしてヒラギノ角ゴのW3を指定して Text を作成。 (デバッグのため青色の枠線も表示) Japa…
WWDC 2019 Session 233 Mastering Xcode Previews https://developer.apple.com/videos/play/wwdc2019/233/ を見ていて、あれ、これもしかして Deployement Targe iOS 13以降のプロジェクトじゃなくても SwiftUI のプレビュー表示は使えるんじゃない?と思っ…
WWDCのメモリのセッションを見ていたら思わぬTipsについて言及されていた。 WWDC 2018 iOS Memory Deep Dive の20分57秒あたり https://developer.apple.com/videos/play/wwdc2018/416 UIGraphicsBeginImageContextWithOptions を使うのはやめて UIGraphicsI…
AVSpeechSynthesizer の delegate メソッド speechSynthesizer(_:willSpeakRangeOfSpeechString:utterance:) は音声読み上げの際にこれから読み上げる箇所を NSRange で知らせてくれる。 このメソッドを使って読み上げテキスト全体のうち今どこが読まれてい…
Xcode 11.2 で Storyboard か xib で UITextView を使っていると iOS 13.2 より前のバージョンでクラッシュするという凶悪なバグが発生している。 実際にクラッシュを起こしてみると以下の様に _UITextLayoutView ってクラスは無いとエラーメッセージが表示…
最近 iOS 13 でバグも含め挙動が変わった点で色々と苦労している。そんな中良い改善点もあった。タイトルの複数の AVSpeechSynthesizer の同時再生がその1つ。 これまでは AVSpeechSynthesizer の同時再生はできなかった。できないと一口に言っても妙な挙動…
Xcode 11, iOS 12.2, iOS 13.1, iOS 13.1.3 で動作確認 デフォルトの読み上げ音声の言語の確認 AVSpeechSynthesisVoice.currentLanguageCode() 参考に読み上げ確認の実装 (AVSpeechSynthesisVoice を設定せずデフォルト状態での読み上げ) let synthesize =…
タイトルの通り iOS 13 で EventKitUI に UIFont のカテゴリメソッドが追加された。 @property(nonatomic, readonly, class) UIFont *ek_defaultOccurrenceSecondaryTextFont; + (UIFont *)ek_defaultOccurrencePrimaryTextFontForSizeClass:(UIUserInterfac…
まず初めに以下の様なString型の enum を用意する。 enum SegueIdentifier: String { case a case b } Swift 5 以前 UIViewController の prepareForSegue メソッド内で segue.identifier から enum SegueIdentifier の作成を行う。 segue.identifier の型は…
タイトルの通り、iOS 13 で以下のメソッドが depecated になった。 UIView - UIKit | Apple Developer Documentation Animating Views class func beginAnimations(String?, context: UnsafeMutableRawPointer?) class func commitAnimations() class func s…
前回までの変更点 koze.hatenablog.jp 今回は iOS 13 beta 3 で変更点をチェック。 追加フィルタは1つで、他若干の追加APIが見られた。 https://gist.github.com/Koze/86315376f00fa44662f0d841f046e5d2/revisions iOS 13 beta 3 CIRoundedRectangleGenerato…
iOS 13 で何か追加の CIFilter はあったかな?と思って diff を取ってみたら面白かった。 使った出力はワンライナーでこれ CIFilter.filterNames(inCategory: nil).forEach{print($0)} CIFilter Changes iOS 12 - iOS 13 https://gist.github.com/86315376f0…
WKWebpagePreferences WKWebpagePreferences クラスが追加された。 既存では WKPreferences というクラスが WKWebView 全体の設定クラスとして用意されている。 新たに追加された WKWebpagePreferences は基本的にはページ単位での設定クラスになる。 どうい…
CGPDF 周りの新APIを発見 func CGPDFContextBeginTag(_ context: CGContext, _ tagType: CGPDFTagType, _ tagProperties: CFDictionary) CGPDFContextBeginTag(_:_:_:) - Core Graphics | Apple Developer Documentation func CGPDFContextEndTag(_ context:…
AppKit で気になった追加API NSScreen var localizedName: String { get } localizedName - NSScreen | Apple Developer Documentation これまではスクリーン(macOS ではディスプレイ)に関する情報の取得は CGDisplay 系のAPIで取得していた気がする。 も…
こっちの記事の派生で Core Data の更新箇所だけ切り出し koze.hatenablog.jp Core Data Default Value オプション Core Data のモデルの String attribute で Default Value の項目が空の場合に Null String を使うか Empty String "" を使うかのチェックボ…
気になるところだけざっくり Xcode 11 Beta Release Notes | Apple Developer Documentation New Features SwiftUI(書くまでもなく) Application Loader が Xcode に同梱されなくなった Asset Catalog Asset Catalog でキーボードショートカットでのコピペ…
Xcode 11から IBSegueAction が追加された。利用可能なOSは iOS 13, macOS 10.15以降 この新機能は Segue で接続し呼び出す ViewController への必須パラメータ渡しの点でメリットがある。 既存実装 prepare(for:sender:) だと func prepare(for segue: UISt…
クラッシュ時のコンソールログは以下 *** Assertion failure in -[UIDocumentPickerViewController _commonInitWithCompletion:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3599.6/UIDocumentPickerViewController.m:91 *** Termin…
Xcode + iOS Simulator ででたまに遭遇するアプリが起動しない以下のエラー。 This app could not be installed at this time. クリーンビルドするとか Xcode や Mac を再起動するなどいくつか紹介されているけど他の方法も見つけたので1つの解決の例として…
縦書き対応した iWorks についてMacお宝鑑定団にて http://www.macotakara.jp/blog/category-60/entry-37209.html 今回の縦書き表示は、Core Textではなく、iWorks専用レイアウトエンジンが搭載されていて、 との事で気になったので調べてみる。 otool -L /A…
前段 CaseIterable を使って case の index を取得する Extension にする ソースファイル 前段 Swift 4.2 の CaseIterable の allCaeses を使って enum の case の一覧や個数が取得可能になり随分便利になった。 表題の enum の index の取得について、まず …
調査の動機 Swift って結構省略して書けるけどその分 Xcode が脳内補完するからビルドが遅くなるんじゃないの? だったら省略表記無しでコードが長くなってもビルド速度が早い方がいい。 エビデンスが無いので一応確認してみよう。 ビルド環境 ビルド環境 本…
部分的に Swift で書き直しているプロジェクトで起きたケース。 .xcdatamodeld のエンティティ設定で Core Data の Code Generation を Objective-C から Swift に変更した後 Objective-C からの呼び出しでクラッシュ まず Objective-C と Swift の Core Dat…
環境 Xcode 10.0 Core Data Code Generation Code Generation は Xcode が Core Data のモデルクラスの基本実装を自動で行ってくれる機能で <ProductName>.build/Debug-iphonesimulator/<ProductName>.build/DerivedSources/CoreDataGenerated/<FileName> の中にファイルが自動で生成される。 Fil</filename></productname></productname>…
App Transfer の手順については以下 koze.hatenablog.jp 譲渡作業で確認できた注意点 ダウンロード等のレポート情報が見られなくなる アプリの譲渡を行うと譲渡側の App Store Connect からアプリ自体が削除されてしまい、これまでのダウンロード数などのレ…
App Transfer の概要 App Transfer は App Store でのアプリの譲渡機能で、レビューを維持したまま他の Developer アカウントへアプリを移管する事が出来る。ユーザはアプリを別途ダウンロードする必要はなく同一のアプリとしてアップデートを行う事が出来る…