iOS関連のことを調べてみた2022年05月21日

iOS関連のことを調べてみた2022年05月21日
目次

【Unity】iOSネイティブプラグイン開発を完全に理解する – サンプルコードをSwiftだけで完結出来るように置き換える

本編「[【Unity】iOSネイティブプラグイン開発を完全に理解する](https://qiita.com/mao_/items/5b33c90e533a538570b8)」の**追記記事**です。
[記事中での用語や略称](https://qiita.com/mao_/items/5b33c90e533a538570b8#%E8%A8%98%E4%BA%8B%E4%B8%AD%E3%81%A7%E8%A7%A3%E8%AA%AC%E3%81%99%E3%82%8B%E8%A8%80%E8%AA%9E%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)についてはそのまま本編に倣う形とし、記事の内容自体もある程度は本編を読み進めているのを前提に記載していきます。

先日辺りに @fuziki さんが書かれた以下の記事を試す機会があり、実際に自分がObjC++で実装したiOSネイティブプラグインを書き直してみた所、 **「ほんまにSwiftだけで完結できるやんけ…」** となったので、遅ればせながらも[本編](https://qiita.com/mao_

元記事を表示

【Swift】GitHubの言語カラーをすぐ使える拡張作った

# はじめに
GitHubには言語によって色が割り振られています。

そんな言語カラーを言語名を指定するだけで再現できる拡張を作成したので共有します。

# UIColor
“`swift
import UIKit

public extension UIColor {
convenience init(language: String) {
switch language {
case “1C Enterprise”:
self.init(red: 0.5058823529411764, green: 0.2980392156862745, blue: 0.8, alpha: 1.0)
case “4D”:
self.init(red: 0.0, green: 0.25882352941176473, blue: 0.5372549019607843, alpha: 1.0)
case “ABAP”:
self.init(red: 0.90

元記事を表示

【iOS, Swift】CIFilterで点描してみた

## 環境
* Xcode:13.3.1
* Swift:5.6

## 点描のソースコード例

点描するには、CIFilterの「CIPointillize」を使う

“`swift
class SampleViewController: UIViewController {

@IBOutlet weak var testDisplayImage: UIImageView!

override func viewDidLoad() {
super.viewDidLoad()

// AssetsにDummyって名前の適当な画像を置く
let dummyImage = UIImage(named: “Dummy”)!
let pointillizeImage = addPointillizeEffect(for: dummyImage)
self.testDisplayImage.image = pointillizeImage
}

func addPointi

元記事を表示

[SwiftUI]住所から地図を表示

## コード
住所から緯度・経度を取得し、その緯度・経度を基に地図を表示する処理を実装
※ プレビュー で `東京都千代田区千代田` の地図を表示している

“`Swift
import SwiftUI
import MapKit

struct MapView: View {
let address: String
@State private var map = MKCoordinateRegion()

var body: some View {
VStack {
Map(coordinateRegion: $map)
.onAppear {
self.getLocation

元記事を表示

【Swift】SPM関係でエラーが出た時の対処法

SPMのエラーは何も変更してないのに突然発生します。
かなりの恐怖体験です。
![スクリーンショット 2022-05-19 21.30.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/8eb51c5a-cd67-fe52-d6de-dd3cf498a986.png)

いまSPMのエラーで泣きそうになってる君に対処法を伝授します。

# 対処法
Xcodeのメニューから「File」を選択します。
![スクリーンショット 2022-05-19 21.39.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/0e40b5e8-7434-d6ca-80ca-4bb4bf6e7e83.png)

①「Packages」を選択します。
②「Update to Latest Package Versions」を選択します。
![スクリーンショット 2022-05-19 21.40.14.png](

元記事を表示

SwiftUI + MVVM + Firebase を利用して Twitter に似たアプリを開発した話

## SwiftUI + MVVM + Firebase を利用して Twitter に似たアプリを開発する

## 参考にした YouTube
https://www.youtube.com/watch

元記事を表示

SwiftでMeCabを使う方法

MeCabはよく使われている形態素解析器ですが,Swiftで開発するiOSアプリに導入する方法についての情報は少なかったので導入までの手順を紹介します.

# MeCabを使おうとする前に

MeCabをローカルで動作させる最大の問題点はディクショナリのサイズが大きいことです.例えば,新語に強いというmecab-ipadic-NEologdは900MB近くあるので,これを使ってアプリを作ったところアプリのサイズは1GBを超えてしまいました.

単に単語に分解したいだけの場合は標準のNaturalLanguageフレームワークを使うこともできます.なお,NSLinguisticTaggerはNaturalLanguageに置き換えられDeprecatedになっています.

単語の品詞を知ることが目的の場合には上記の方法では間に合いません.その場合はMeCab等を使うことになりますが,まずはクラウドサービス等を検討するのが良いでしょう.筆者が今回のシステムでローカルのMeCabを採用した理由は以下の通りです.

– クラウドの利用料を払いたくない
– そこまで多くのユーザへの展開を考えてい

元記事を表示

【Flutter】結局、url_launcherはどう実装すべきなのか。

[_url_launcher_](https://pub.dev/packages/url_launcher) を 6.0.20 -> 6.1.2 にアップしたところ `launch` と `canLaunch` が Deprecated になっていたため書き直したが、挙動が変わったため修正。

#### 元のコード

“`dart
await canLaunch(“アプリのカスタムURLスキーム”)
? await launch(“アプリのカスタムURLスキーム”)
: await launch(“ウェブのURL”);
“`

このコードに問題があったことは認識していて、Androidの場合、特定のアプリにおいては想定している経路では処理されていない。

`twitter` などのURLスキームはアプリをインストールして必要な設定をしても `canLaunch` が _false_ を返してくる場合があり、ウェブブラウザでURLを起動される。
結果的に、ディープリンクとしてサポートしているアプリが起動されていた。

そのため、`canLaunch` を使用せ

元記事を表示

【SwiftUI】LazyVGrid内の画像を正方形にする【ワークアラウンド】

## 1. はじめに
[@tsuzuki817](https://twitter.com/tsuzuki817)です?
SwiftUIでLazyVGrid内の画像を正方形として表示するまでに時間がかかってしまったのでシェアしておきます。

| 項番 | ページ内リンク |
|:—-:|:————-|
| 1 | [1. はじめに](#1-はじめに) |
| 2 | [2. 個々の大きさがバラバラになる](#2-個々の大きさがバラバラになる) |
| 3 | [3. アスペクト比がおかしくなる](#3-アスペクト比がおかしくなる) |
| 4 | [4. うまくいった方法](#4-うまくいった方法) |
| 5 | [5. 参考](#5-参考) |

## 2. 個々の大きさがバラバラになる
以下の方法で実装すると、大きさがバラバラになり不採用

“`swift
LazyVGrid(
columns: Array(repeating: .init(.flexible()), count: 3),
alignment: .cen

元記事を表示

【Swift】Storyboardを使わずにコードのみで実装する準備

# はじめに
たぶんUIKitを使っている人からしたら当たり前の事なのかもしれないですが、
私はUIKit初心者で毎回忘れるので自分用に書き残しておきます。

# Storyboardを削除
「Main」を右クリックして「Delete」を選択
![スクリーンショット 2022-05-17 0.44.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/104fddd2-0e8c-71b9-36a3-1879aeb8e814.png)

Move to Trashを選択
![スクリーンショット 2022-05-17 0.46.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/1e98c549-eb4c-fb73-41c2-910082437a58.png)
|Move to Trash|Remove Reference|
|-|-|
|完全に削除
(ファイルからも消える)|見た目だけ削

元記事を表示

【SwiftUI】バナー広告の表示方法

第1部: [リワード広告](https://qiita.com/SNQ-2001/items/253173abefc6f90f86ea)
第2部: [インタースティシャル広告](https://qiita.com/SNQ-2001/items/5590a55324c39582a9ef)
第3部: [ネイティブ広告](https://qiita.com/SNQ-2001/items/7151fdcb8e9f8c2c42c2)
第4部: [バナー広告](https://qiita.com/SNQ-2001/items/9bf389475cb5995469a0) ← イマココ

# はじめに
AdMob広告シリーズ第3部です
今回は[バナー広告](https://developers.google.com/admob/ios/banner?hl=ja)です。

# 実装準備
実装の前に[スタートガイド](https://developers.google.com/admob/ios/quick-start?hl=ja)に記載してある事を行います

①: Mobile Ads SDK のインポ

元記事を表示

SwiftUI を利用したアプリを1日で開発 〜 審査 〜 App Store で公開した話

## この記事の内容(要約)
![FS2xf81aIAI6SnF.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199441/9eaf363c-8a03-5065-ea28-cca4b790a4c6.jpeg)

– SwiftUI を利用して 1日でアプリを開発し、審査に提出し、App Store で公開した
– 開発〜審査への提出〜公開を一気通貫にやったことで、自信につながった
– ポートフォリオとしてアプリを開発する場合は、凝ったアプリよりも機能が少なくても他の人も役立つアプリを短期間で開発した方が良いと感じた

## この記事を書いた人の特徴
– 2011年 大阪教育大学卒(文系・全くプログラミングの知識なし)
– 2018年 エンジニアとして働き始める
– 2020年 〜 20221年 iOS アプリ開発業務に従事

## アプリの概要
### 郵便番号から住所を検索するアプリ
https://apps.apple.com/jp/app/searchzipcode/id1624355640

元記事を表示

【iOS】Alertでradiobuttonを使った選択式の表示を出す

# はじめに

フィルター等をかけたい時にradiobuttonを使った選択式のViewを作る必要があり作成しました。

独自のViewを作ればどうとでも作れますが、
なるべくiOSのフレームワーク内で作成した方が統一感が出ると思いAlert内で作成しました。

基本的にはAlert内に独自で作ったViewをaddSubviewするだけです。

# 開発環境

+ iOS 15.2
+ Xcode 13.3.1
+ Swift 5.6

# 完成画面

以下のようにAlert内で選択出来るようなradiobuttonを配置します。
どれかひとつしか選択出来ないようにします。

![radio_alert2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671830/93a98bb8-220d-1346-679a-55afc8ed8754.gif)

# 構成

+ Alert内のViewに独自に作ったViewをAddsubviewします。
+ 独自に作るViewはUITableViewです。
+ ra

元記事を表示

【AdMob】スタートガイドを公式より詳細に書く

# はじめに
https://developers.google.com/admob/ios/quick-start?hl=ja

ドキュメントを読むのが慣れてない人用です。
画像付きでわかりやすく説明したつもりです。
分からないことがあれば[こちら](https://twitter.com/_SNQ)にDMください。

# Mobile Ads SDK をインポートする
公式から推奨されているCocoaPodsのみ紹介します。

最初にディレクトリを移動します。
“`
cd ファイルパス
“`
![スクリーンショット 2022-05-15 19.25.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/472e234d-d735-2fd5-b054-02e389d1bb57.png)
![スクリーンショット 2022-05-15 19.25.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1

元記事を表示

SwiftUIのGeometryReaderでレイアウトが崩れるときは

– `.background` 内で `GeometryReader` を使うと崩れなそう
– 値の受け渡しには`PreferenceKey` 使うとよさそう

サンプルコード
“`swift
import SwiftUI

struct ContentView: View {
@State var size: CGSize = .zero

var body: some View {
VStack {
Text(size.debugDescription)
ChildView()
}
.onPreferenceChange(SizePreferenceKey.self) {
size = $0
}
}
}

struct ChildView: View {
var body: some View {
Text(“Message”)
.background(GeometryRe

元記事を表示

【iOS】Navigation Barの背景色を変える

# はじめに
いっつも忘れてググることになるので忘れないようにメモです。

# navigationBarのbackgroundColorではダメ

毎回以下のように書いてしまいます。
“`swift
navigationController?.navigationBar.backgroundColor = .systemBlue
“`

ですがそれだけだと本当にNavigationBarの部分しか色が変わりません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671830/07b8dfa2-52cc-1fed-1ddf-b259363c4699.png)

# UINavigationBarAppearanceを使いましょう。

iOS13から追加されたUINavigationBarAppearanceでNavigationの装飾を行います。

“`swift
//UINavigationBarAppearanceをインスタンス化
let appearance = UINav

元記事を表示

【Xcode】リリース済みアプリで発生したクラッシュの原因を探る

# はじめに
リリース済みのアプリでユーザーからクラッシュ報告が来ても、こちらで再現できないと原因が分からないので修正のしようがありません。
クラッシュログを送ってもらってシンボル化して読めるようにするなどの記事がありましたが難しくてよくわかりませんでした。
そんな中いい方法を見つけたので書き残しておきます。

# 方法
メニューバーの「Window」を選択
![スクリーンショット 2022-05-14 13.48.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/96d65c3c-2ad6-ceec-e941-e43ca663fe8f.png)
「Organizer」を選択
![スクリーンショット 2022-05-14 13.50.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/855820ff-0cd2-1068-6bd2-6460e2b52500.png)
①アプリを選択
②「

元記事を表示

fastlane経由でiOSアプリをFirebaseAppDistributionからテスト配信する時は、Rubyについて知っておくほうが良かった話

# はじめに
こんにちは、iOSエンジニアの [dayossi](https://twitter.com/dayossi) です。

家族が幸せになれるサービスを提供したいと思って、
[HaloHalo](https://hallo-hallo.sakura.ne.jp/home/)という家族日記アプリをリリースしています。

今回は、Firebaseが提供しているアプリのテスト配布ツール`Firebase App Distribution`を
fastlaneから呼び出して、テスト配布を自動化する中で詰まった点を共有いたします。

fastlaneがRubyで構成されているにもかかわらず
私はRubyでの開発は全くやったことがないので、
ほぼ手探り状態でfastlaneを試しました。。

先人の方々の叡智を参考に
なんとかfastlaneを実行してipaファイルをビルドできる状態まで辿り着きましたが

肝心のFirebase App Distributionへデプロイできず、
かなり詰まりました。

同じような境遇で悩まれている方の参考になりましたら幸いです。

## 前提
以下の

元記事を表示

【Swift】Windowの仕様変更が激しい

# 警告文を消したい
“`
‘keyWindow’ was deprecated in iOS 13.0: Should not be used for applications that support multiple scenes as it returns a key window across all connected scenes
“`
“`
‘windows’ was deprecated in iOS 15.0: Use UIWindowScene.windows on a relevant window scene instead
“`
# iOS13以前
![スクリーンショット 2022-05-13 14.37.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/082136e9-ae2a-2578-8aaa-7b3c213a7549.png)
“`Swift
UIApplication.shared.keyWindow?.rootViewControll

元記事を表示

iPadのSwift Playgroundsだけでswift初心者の高校教師がアプリの開発に挑戦してみる <その2>

https://qiita.com/kerikerijy/items/38ddbc93ae62c84351b8

# Swift Playgroundsとの出会い

実は、私がSwift Playgroundsだけでアプリの開発に挑戦してみようと思ったのは、Appleが提供しているApple Teacherというプログラムを受講したことがきっかけです。

私にとって、とても有用な学びとなったので、簡単に紹介しておきます。

## Apple Teacherについて

https://appleteacher.apple.com/

Apple Teacherは、指導と学習にiPadなどのApple製品を組み込んでいる教員を支援するラーニングプログラムです。もちろん、無料です!Appleのすごいところは、このような質の高いプログラムが無料で提供されているというところだと思います。

https://www.apple.com/jp/education/giga/

私は、Appleが日本のGIGAスクール構想にとても前向きに参入しているという印象を持っています。もちろん、企業なのでAp

元記事を表示

OTHERカテゴリの最新記事