iOS関連のことを調べてみた2021年11月10日

iOS関連のことを調べてみた2021年11月10日
目次

【Flutter】プラグインでiOSのrootViewControllerを取得する方法

#概要 FlutterプラグインでiOSネイティブ画面を利用するために、rootViewControllerを取得する方法を整理します。 [こちら](https://qiita.com/mkosuke/items/b384035e507ad0208c10)の記事を参考にさせていただきました(ただただ感謝✨✨)。プラグイン作成時にはself経由でrootViewControllerを取得できず、代替手段が必要になるため、その補足記事となります。 #環境 “`shell-session $ flutter –version Flutter 2.5.3 • channel stable • https://github.com/flutter/flutter.git Framework • revision 18116933e7 (3 weeks ago) • 2021-10-15 10:46:35 -0700 Engine • revision d3ea636dc5 Tools • Dart 2.14.4 “` #実装 UIApplication経由でrootViewContr
元記事を表示

 Flutter :   TextFormFieldでUIを描画できない

#はじめに 現在flutterでアプリを作成中(カレンダーアプリ的なやつ)超初心者で勉強中 アカウント機能 ログイン機能を作成中に本事象に遭遇してなるほどーと思ったのでメモ程度に #開発環境 ・使用言語:dart(flutter) ・AndroidStudio 4.1.2 ・iOS シミュレーター(iOS14.5) #事象 TextFormFieldを使用して入力フォームを作成しようと思ったが、以下のエラーが表示され対象画面へ遷移した際にUIが描画されない “` The following assertion was thrown during layout: A RenderFlex overflowed by 99164 pixels on the bottom. The overflowing RenderFlex has an orientation of Axis.vertical. The edge of the RenderFlex that is overflowing has been marked in the rendering with a yello
元記事を表示

Xcode のSimulator に旧iOS のイメージを追加する[Big Sur]

Xcode のSimulator を使って,iPad OS 14 を動かしたかったのだけど,Xcode インストール時には最新のiOS 15 しか用意されていなかった.

ネット上の情報とはUI とか色々変わっていて,古いOS の追加方法が分からなかったのでメモ.

前提

使用しているMacBook Pro のOS はBig Sur 11.5.2, インストールしたXcode はVersion 13.1 です.

結論

旧OS の

元記事を表示

iOS15.1をXcodeでビルドしたい時にUnsupprted OS versionになってしまうのを回避するやり方

#事象 iOS15.1にアップデートしちゃったけど、Xcode上で「Unsupprted OS version」と表示されビルド出来ない。 前回と同じようなネタだけど再現したため投稿。 ![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/90301/a9154dd6-69e0-e00c-62e8-742c40d6820f.png) #対処策 Device Supportのフォルダの”15.0″を複製し、”15.1″にリネームする。 “15.0”が無い場合は、Xcode 13.1をダウンロードしてから抽出する。 #手順 1. /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/ 配下で15.0を複製する ![スクリーンショット 2021-11-09 13.51.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/90301/
元記事を表示

nibを用いて、TableViewを作成(初学者向け、Delegateの説明なし、コード説明あり)

Swift初学者であり、間違っていることも、 記載していますので、ご注意ください。 ##手順1 まずはTableCellクラスで、 Nibの名前、IDをスタティック定数として、記載しておく。 **メリット** コードで管理して、スペルミスを防ぐ+入力変換に表示される  “` final class ItemListTableViewCell: UITableViewCell { static let nibName = UINib(nibName: “TableViewCell”, bundle: nil) static let nibID = “Cell” } “` ##手順2 TableViewCellに、Identifier:Cellを設定。 ![スクリーンショット 2021-11-09 8.34.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/799713/749856e9-51bc-5105-4afb-ae2c72b80afc.png) ##手順3 V
元記事を表示

【Flutter】プラグイン作成時にiOSローカルのライブラリを参照する方法

# 概要 Flutterプラグイン作成時に、プラグイン側でiOS向けローカルライブラリを抱きこむ際の設定方法を整理します。 ユースケースとしては、プラグイン利用者が公開済のpodを利用するのではなく会社独自のiOSライブラリ等をプラグインを通してFlutterで利用することを想定しています。 # 環境 “`shell-session $ flutter –version Flutter 2.5.3 • channel stable • https://github.com/flutter/flutter.git Framework • revision 18116933e7 (3 weeks ago) • 2021-10-15 10:46:35 -0700 Engine • revision d3ea636dc5 Tools • Dart 2.14.4 “` # 実施内容 ① Frameworkの取り込み  a. iOSプロジェクト直下に利用したいライブラリのframeworkをコピーアンドペースト   - ※frameworkは、exampleのiosプロジェクトを配置し
元記事を表示

Unity2019でAdmob実装時にクラッシュして表示されないときの対処法

https://kaedeee.com/unity2019-admob/ しばらく更新していませんでした!というのもアプリ作るのにはまってて笑 (アプリのURLはまた後で) ところで今回は、 Unity 2019でAdMobを実装した際にクラッシュしてしまいアプリが表示できなくなってしまう時の対処法です。 (やはり Unity 2019は最新版ということで2019に関する記事がなかなかなーい!!笑笑) というわけで僕のでよければ参考にどうぞ。 結論から言うと以下二つに対応することでうまくいきました!! (あ、Android アプリ用です。この記事) #Unityのバージョンを確認する 結論から言うと Unity 2019 1.4f1  ×  Google mobile ADS Unity plugin 3.16  が最強! はじめ自分は Unity のバージョン→ 2019.3.0a3 に AdMobのバージョン→Google mobile ADS Unity plugin v3.17 を投入! ですがこの時にx86 no
元記事を表示

AppStore リジェクト「Safety – Physical Harm: COVID-19 の対策について触れてるけど情報ソースがないよ」の対処

初めて見るリジェクト内容で少し戸惑ったため共有。 # 状況 2021年10月ごろ。 とあるイベントで使用するアプリの申請を行った際に「Guideline 1.4.1 – Safety – Physical Harm」を理由にリジェクトされた。 # 詳細 リジェクト内容は以下。 > Your app provides health or medical recommendations or references without including the sources of the medical information. > Specifically, we found your app includes safety precautions related to COVID-19 upon launch. > All apps with medical and health information should include links to sources for the information. This helps ensure that App Store u
元記事を表示

UITextView上の任意のテキストに対してカスタムContextMenuを提供する

[UITextView](https://developer.apple.com/documentation/uikit/uitextview)では、[dataDetectorTypes](https://developer.apple.com/documentation/uikit/uitextview/1618607-datadetectortypes)を指定することにより、[カレンダーイベント](https://developer.apple.com/documentation/uikit/uidatadetectortypes/1618506-calendarevent)、[住所](https://developer.apple.com/documentation/uikit/uidatadetectortypes/1618504-address)、[飛行機の番号](https://developer.apple.com/documentation/uikit/uidatadetectortypes/1648140-flightnumber)などを認識し、タップアクションとコン
元記事を表示

iOSアプリ開発に便利なライブラリ

#はじめに – ライブラリについてメモとして記事を書いています。 #便利なライブラリ一覧 – IQKeyboardManager – Kingfisher – SnapKit – lottie-ios #IQKeyBoardManager ### どんなライブラリ? – IQKeyboardManagerのGitHubから引用 – While developing iOS apps, we often run into issues where the iPhone keyboard slides up and covers the UITextField/UITextView. IQKeyboardManager allows you to prevent this issue of keyboard sliding up and covering UITextField/UITextView without needing you to write any code or make any additional setup. To use IQKeyboardMana
元記事を表示

【Flutter】Statefullなカウンターアプリをhooks_riverpod+state_notifier+freezedでリファクタリングする

FlutterのNullSafetyがstableになってしばらくたち、最近になってriverpodがstableになったので、記念にhooks_riverpod + state_notifier + freezedの使い方を最低限記載しておきます。 プロジェクトを作った時に作られるカウンターアプリを上記パッケージを使って実現するようにリファクタリングしていきます。 # tl;dr – flutterの初期アプリをhooks_riverpod+state_notifier+freezedを使うようにリファクタリングする – 結論としては単機能なアプリでこんなに複雑にやると余計わかりずらい(趣旨としてはサンプルなので良いのですが、、、) – freezedも無理やり使ったしhooksはさすがに使えなかったので、hooks特有の機能については本記事のスコープ外 #### 完成版の全コード https://github.com/tokku5552/flutter_riverpod_sample/tree/1.0.0 ## 環境 – Android Studio “`yaml:
元記事を表示

【もう、なくそう。】誹謗中傷を「なくす」アプリの開発

# はじめに **技術的な内容のみをご覧になりたい方は[こちら](#技術的なポイント)からどうぞ** [](https://tokiwaproject.page.link/mute) **誹謗中傷をネット上から「なくす」アプリ**を開発しました。簡単にいうと、Web上の特定の単語、過激な表現や人を傷つけるような言葉を非表示にするものです。 アプリ開発の動機など、いわゆる「ポエム」よりの内容は[note](https://note.com/izumo092/n/ne17f44c9fda4)に掲載しているので、Qiitaでは機能や技術面に絞ってお話ししたいと思います。 **[ダウンロードはこちらから](https://tokiwaproject.page.link/mute)** https://apps.apple.com
元記事を表示

enumとvalidationの用い方(初学者向け、コード説明あり)

Swift初学者であり、間違っていることも、 記載している可能性もありますので、ご注意ください。 ##まずはじめに用語の説明 バリデーションとは、 __入力内容や記述内容が要件を満たしているか、妥当性を確認すること__ URL:https://wa3.i-3-i.info/word11610.html かんたんに言うと 入力チェックです。 enumとは、 __列挙型(enum)とは関連性のある事柄、データを一つにまとめた定数のようなものです。__ URL:https://www.sejuku.net/blog/35711 ##行いたいこと テキストフィードが2つあり、 一つに税抜金額、 もう一つに税率を入力し、 数値が入力されているか、されていないかを確認する。 チェック後に、行いたい処理を行う。 というプログラムを作成します ##enumでValidationを定義 ![スクリーンショット 2021-11-08 5.22.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/799713/
元記事を表示

[SwiftUI] ロングタップした位置をViewに伝える方法

## はじめに SwiftUIで、Gestureを使ったUIを作成する機会があり、その時の実装メモを残したいと思います。 ## どんなことをするのか Viewをロングタップして、その場所(座標)をView側に伝える ## 概論 SwiftUIだけでは完結しなかった。 UIViewRepresentableを使って、UIKitのGestureを使う必要がある(iOS14までだと多分、) ## 実際のコード 早速実際のコードです UIViewRepresentableを使ったところ “`ViewRepresentable.swift struct ViewRepresentable: UIViewRepresentable { class Coordinator: NSObject { @Binding var point: CGPoint init(point: Binding) { _point = point } @objc func longTappe
元記事を表示

CGRectを中心とサイズ指定で簡単に生成できるようにする

##やりたいこと Viewの配置場所指定などで頻繁に使用する、おなじみのCGRect。 CGRectの生成方法は “`swift CGRect(origin: CGPoint, size: CGSize) “`  または “`swift CGRect(x: CGFloat, y: CGFloat, width: CGFloat, height: CGFloat) “` という感じで、  四角形の左上の座標指定 + 幅・高さ指定 で生成します。 なのですが、実際には 中心の座標指定 + 幅・高さ指定 からCGRectを生成したいシーンはよくあるかと思います。 毎度毎度、これらの値からoriginを計算してCGRect生成するのはめんどくさいので、  中心の座標 + 幅・高さ で一発でCGRectを生成できるようにしてしまいたいですね。 ##解決方法 CGRectを 中心座標 + サイズ の情報で生成でいるイニシャライザを、 CGRectのExtensionとして実装してしまえば良いです。 “`swift:CGRectExtension.swift i
元記事を表示

Flutter製のiOSアプリでApple Watchを連携する際にハマったこと

Flutter製のiOSアプリでApple Watchを連携する際にいろいろハマった点があったのでメモに残しておきます。 # 環境 – Flutter 2.5.2 – Xcode 13.0 ## 基本的な手順 – XcodeのiOSプロジェクトにWatchのターゲットを追加 – プロフェクトフォルダ内/ios/Runner.wcworkspaceをXcodeで開く – File>New>Target>WatcOS>Watch App for iOS App – 任意のプロジェクト名(ここの記事では**watch**とする)をつけて作成 – bitcodeをYESに変更 – iOSとWatchOSのバージョン番号を一致させる – Flutter Method ChannelでFlutterとSwift間のデータのやり取りを実装 詳細は[こちらの記事](https://medium.com/kbtg-life/adding-apple-watch-to-flutter-app-via-flutter-method-channel-f1443532d94e)を
元記事を表示

ignoresSafeArea の第一引数と SwiftUI のキーボード避け

## 概要 SwiftUI には `ignoresSafeArea` という modifier がありますが、しっかり理解せず使っていたので基本的な動作や引数の役割、SwiftUI の自動でのキーボード避けとの関係について調べてまとめました。 ## ignoresSafeArea とは SwiftUI の View はデフォルトでは SafeArea の中に配置されます。例えば画面全体に背景色を設定しようとすると、背景色は以下のように SafeArea 内だけに適用されます。 “`swift struct ContentView: View { var body: some View { Color.yellow } } “` ときにはこの振る舞いが余計なお世話になってしまうことも
元記事を表示

iOS(Swift)リンク集

個人的な雑多リンク集です。 https://stackoverflow.com/questions/39080807/drag-and-reorder-uicollectionview-with-sections/39088025#39088025 [Supporting Drag and Drop in Collection Views]( https://developer.apple.com/documentation/uikit/views_and_controls/collection_views/supporting_drag_and_drop_in_collection_views) https://swift-ios.keicode.com/devenv/xcode-how-to-build-for-12-with-xcode11.php https://phosphor-bronze.blogspot.com/2018/07/uicollectionviewios11.html ※配列の要素の交換は`swapAt(i, j)`で可能 https://qii
元記事を表示

iOS15でのジオフェンシングの異常について

#iOS15でのジオフェンシングの異常について iOS14まで正常に動いていたジオフェンシングが、 iOS15以降、正常動作していないケースがありました。 「iOS15での端末再起動後、アプリ起動するまで、ジオフェンスを検知しない」問題があるようです。 日本語での該当記事が見つからないため、 とりあえずレベルですが、検証してみました。 ##海外記事 [ios15 geofencing not working]で検索すると、 いくつかのアプリで、iOS15+ジオフェンシングの組み合わせで問題があり、 掲示板などで多少、会話がなされているようです。 内容的には、以下のような共通点があります。 – iOS14までは問題なく、iOS15では問題がある – 端末再起動後、アプリを起動しないとジオフェンスが有効にならない – iOS15.0.2でも直っていない [Geofencing problems with iOS15.01] https://discussions.apple.com/thread/253247480 [Geofencing and iOS15.] https://
元記事を表示

Xcode13のUser-Defined Settingで「MTLLINKER_FLAGS」キーが登録できないときの対処法

# TL;DR Xcodeのビルド設定に新しく`Metal Linker – Build Options`という項目ができているので、そこに値`-cikernel`を指定しましょう。 # 環境 – Xcode 13.1 – macOS Big Sur 11.6.1 # 起こっていたこと Core ImageのフィルタをMetalファイルで記述するには、XcodeのBuild Settingを以下の2つ変更する必要があります。 – `Other Metal Compiler Flags`に`-fcikernel`を指定する – `User-Defined Setting`として`MTLLINKER_FLAGS`キーを追加し、値に`-cikernel`を指定する このうち下側の`User-Defined Setting`で`MTLLINKER_FLAGS`キーを追加しようとしたところ、「すでに設定されている名前なので違う名前で設定してね」というエラーが出ました。 > There already is another setting named “MTLLINKER_FLAGS”.
元記事を表示

OTHERカテゴリの最新記事