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

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

iOSでHTTP/2とHTTP/3を比較してみた

# iOS で HTTP/2 と HTTP/3 を比較してみた

iOS15 で HTTP/3 がサポートされました

https://developer.apple.com/videos/play/wwdc2021/10094/

## HTTP/3 とは

> HTTP/3 は次世代のインターネット プロトコルで、QUIC の上に構築されています。QUIC は、Google が開発し、インターネット プロトコルの規定を担う標準化団体 IETF に提唱したプロトコルです。HTTP/3 と QUIC を組み合わせることで、ヘッドオブライン ブロッキング、セキュリティ(TLS 1.3 は QUIC の基盤)、信頼度の低い接続での信頼性など、HTTP/2 での以前の課題に対処しています。
https://cloud.google.com/blog/ja/products/networking/cloud-cdn-and-load-balancing-support-http3

つまり、HTTP/3 を使うといい感じになるらしいです
そこで、複数の画像をダウンロードした場合の速度を、iOS

元記事を表示

Flutter iOSシミュレータが真っ白になった時の対処法

## 初めに
Flutterで開発している途中でiOSシミュレータの画面が真っ白のままになってしまい、解決に時間をかけてしまったので記録を残しておきます。

## 環境
+ macOS Big Sur(バージョン 11.6)
+ Flutter 3.0.3

## 問題点
Firebaseをアプリに追加して再度 iOSシミュレータをビルドすると成功するがシミュレータの画面が真っ白のままで動かなくなってしまう。

“`
Launching lib/main.dart on iPhone 12 in debug mode…
Running pod install…
Running Xcode build…
Xcode build done.

元記事を表示

クラウドでの実機検証サービスの考察 ~Remote TestKitの魅力について~

本記事は[Qiita Engineer Festa 2022](https://qiita.com/official-campaigns/engineer-festa/2022)の[Remote TestKitを使ってレビューを書こう!](https://qiita.com/official-events/f0e8b25feb05af6326b3)のエントリー記事です!

https://qiita.com/official-events/f0e8b25feb05af6326b3

—-

# はじめに

ある日、新機能の開発が完了し、実機検証を進めていると、表示崩れが!!!!

すぐにデザイナーの方に「ここデザイン崩れてるので直してください!」と伝えると「私の方だと崩れてないですよ?」との返答。
あれーおかしいなと思い、調べてみるとSafariのバージョンが異なっていました。

別の端末で見ると確かに表示崩れは起きずに、綺麗に表示されています。[^1]

Safariのどのバージョンからこの現象が起きてしまうのか調べようとするものの、**SafariはOSのバージョンと紐づくため

元記事を表示

複数のトレイリングクロージャー

# 1.はじめに
初投稿です。
会社の後輩がSwiftUIのチュートリアルにあったこれで躓いた時、きちんと答えることができなかったので、復習を兼ねて記事にしました。

この記事では
* トレイリングクロージャー
* 複数のトレイリングクロージャー

について書いていきます。

# 2.トレイリングクロージャー
そもそもトレイリングクロージャーって何?

↓↓↓これです↓↓↓
“`swift: 引数が1つだけの場合
/// クロージャー引数をもつ関数の宣言
func doHoge(fuga: () -> ()) {
fuga()
}

/// 普通に引数にクロージャーを渡して、関数を呼び出す
doHoge(fuga: {
print(“fuga”)
})

/// これがトレイリングクロージャー
doHoge {
print(“fuga”)
}
“`
“`swift: 複数の引数のうち、最後がクロージャーの場合
/// クロージャー引数をもつ関数の宣言
func doHoge(fuga: Int, piyo: () -> ()) {
print(“\(fug

元記事を表示

[備忘録]`SwiftPM.SPMRepositoryError error 3.`の解決手順

## 環境
swift version 5.6.1
Xcode 13.3.1

## 発生した問題
以下エラーが出てビルドが失敗
“`
The operation couldn’t be completed. (SwiftPM.SPMRepositoryError error 3.)
“`

## 解決した手順
– Xcodeを終了
– ターミナルで以下コマンドを実行
“`
rm -rf〜/ Libray / Developer / Xcode / DerivedData
rm -rf〜/ Library / Caches / org.swift.swiftpm
“`
– Xcodeを起動
– Xcode左上のメニューから [File] -> [Packages] -> [Reset Package Caches]

## 原因
SPMパッケージのキャッシュが破損したことが原因。

## 参考
– [How to resolve SwiftPM.SPMRepositoryError error 3 in XCode 13.3 – stack overflow](https://

元記事を表示

【Swift】FontAwesomeを使う

# はじめに
今回はFontAwesome v4.7.0に自分の使いたいアイコンがあったのでv4.7.0の使い方を紹介します。
おそらくv4.7.0以降でも同じ使い方が可能だと思います。

# 実装
## フォントファイルをダウンロード
最初に[こちら](https://fontawesome.com/v4/get-started/)からフォントファイルをダウンロードします。
![スクリーンショット 2022-07-13 19.24.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/2398d5d6-6469-49a3-7bdb-e113efc4f6ac.png)
このようなファイルがダウンロードされたと思います。
![スクリーンショット 2022-07-13 19.28.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/ade40a7e-4a0a-3074-5c53-146e517f

元記事を表示

LabelStyleの自作方法(SwiftUI)

## はじめに

Appleのサンプルコードを参考に、LabelStyleを自作する方法を紹介します。

https://github.com/apple/sample-food-truck/blob/820dd9fd2165debc6fd6d29f18169ebb45787dde/App/Truck/Cards/CardNavigationHeaderLabelStyle.swift

## 環境

– OS:macOS Monterey 12.4
– Xcode:13.4.1 (13F100)
– Swift:5.6.1

## 既存コードのリファクタリング

以下のコードをリファクタリングしながら、LabelStyleの実装を紹介します。

“`swift:MonsterCellView.swift
HStack(spacing: 32) {
Image(iconName) // var iconName: String
.resizable()
.scaledToFit()
.frame(width: 68, heigh

元記事を表示

SwiftUIの可読性を上げるために

# 元ネタ

https://qiita.com/uhooi/items/7dfe7ae29adf7aea435b?utm_campaign=post_article&utm_medium=twitter&utm_source=twitter_share

# SwiftUIの課題点

SwiftUIでは、同じ見た目をあらゆる記述で表現することができます。
故に可読性はエンジニアの腕の見せ所でもあります。
ここでは、SwiftUIのコンポーネントを参考に可読性の上げ方を考えてみます。

# コンポーネントを構成する要素を考える

可読性を上げる上でヒントになるのが`Label`クラスです。

“`swift
Label(title: {
Text(“name”)
},icon: {
Image(“image”)
})
“`

このクラスは、TextとImageで構成されています。
一見すると、このLa

元記事を表示

文字列を左寄せにする方法の考察(SwiftUI)

## はじめに

SwiftUIで `Image` と `Text` を左寄せにしつつ、文字列を幅いっぱいに表示したかったのですが、うまくいきませんでした。

実際のコードです。

“`swift:MonsterCellView.swift
import SwiftUI

struct MonsterCellView: View {
var iconName: String
var name: String

var body: some View {
HStack(spacing: 32) {
Image(iconName)
.resizable()
.scaledToFit()
.frame(width: 68, height: 68)
Text(name)

元記事を表示

【Xcode】NSLogを非表示にする

# はじめに
動作には問題のない警告文が大量に出てきて鬱陶しかったのでログを非表示にしました
あんまり良くないとは思うのでやらない方がいいと思います。

需要はないと思いますけど一応やり方を紹介しておきます。

# NSLogとは
`print`との違いは日時を表示してくれる点です。
![スクリーンショット 2022-07-12 15.36.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/948736cc-31c6-50fa-758c-acd2c1b408f4.png)

# やり方
画像の赤枠内をクリックします。
![スクリーンショット 2022-07-12 15.40.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/1e5be67c-efb9-51de-d0e0-4390b7470bd0.png)
クリックするとポップアップが表示されるので「Edit Scheme…」を選択

元記事を表示

やった〜! AppIcon、用意するの楽になった!

# 全サイズ用意するの面倒だった
今まで、Xcodeのアプリ・アイコンは、十数種類のサイズを用意しないといけませんでした。

# ワンサイズだけでいい
Xcode14から、1024pxのサイズだけ用意すれば、自動で調整してくれるようになりました。
楽!

![スクリーンショット 2022-07-12 14.43.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/01116797-d540-5998-f0dc-3fab4afaa893.png)
?
****
フリーランスエンジニアです。
お仕事のご相談こちらまで
rockyshikoku@gmail.com

Core MLやARKitを使ったアプリを作っています。
機械学習/AR関連の情報を発信しています。

[Twitter](https://twitter.com/JackdeS11)
[Medium](https://medium.com/@rockyshikoku)
[GitHub](https://github.com/joh

元記事を表示

iOSでデュアルSIM情報を取得する

SIMの情報を取得しようと今まではこんな感じで、キャリアの名前とか取れてたんですが、

“`
CTTelephonyNetworkInfo *netinfo = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier *carrier = [netinfo subscriberCellularProvider];
self.carrierLabel.text = carrier.carrierName;
“`

iOS12以降ではデュアルSIMを想定したコードにする必要があります。

“`objc
NSDictionary *dicCarrier = [[CTTelephonyNetworkInfo new] serviceSubscriberCellularProviders];
for (id key in dicCarrier) {
NSString *carrierName = [[dicCarrier objectForKey:key] carrierName];
if

元記事を表示

【Swift】Alamofireのパラメータエンコーディングについて

# はじめに
私は通信には必ずAlamofireを使用します。
URLSessionより簡潔にかけて便利だからです。
しかし、パラメータを設定しなければいけない時にエンコーディング形式を設定しないと動作しなかったので備忘録として残しておきます。

# パラメータエンコーディングの種類
## JSONEncoding.default
“`swift
let headers: HTTPHeaders? = [
“user-agent”: “Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36”
]

let parameters: [String: Any] = [“id”: “123456789”]

AF.request(“https://example.com/api”, method: .post, parameters: parameters, encoding: JSONEnco

元記事を表示

Unityゲームのメモリ分布概要

メモリはゲームパフォーマンス最適化の非常に重要な側面です。特にモバイルデバイスの場合、ハードウェアデバイスが限られているが、該当ユーザーを配慮する必要があります。ゲームはPCまたはMacで開発されますが、最終的には(ほとんど)モバイルで実行されます(AndroidとiOSのみが考慮されます)。メモリが適切に制御されていない場合、OOMの原因でモバイルのOSによってプロセスを強制終了することが起こしやすくなります。

しかし実際には、異なるオペレーティングシステムでは、メモリ管理戦略はまったく異なります。プラットフォームごとに専門的なメモリ分析ツールがありますが、これらのツールは、プラットフォーム、統計戦略、さらにはシステムバージョンが異なるために統計的な偏差を引き起こします。たとえば、XCodeのMemory Reportページは、Instrumentの下の独自の統計とは異なります。

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/04acc9bf-7520-3a7d-89ea-

元記事を表示

[Swift]NavigationBarの下線の消し方(iOS13以降)

“`extension.swift
extension UINavigationBar {
@available(iOS 13.0, *)
private func applyAppearance() {
let appearance = UINavigationBarAppearance()
appearance.configureWithDefaultBackground()
appearance.shadowImage = UIImage()
appearance.shadowColor = .clear
appearance.backgroundImage = UIImage()
appearance.backgroundColor = .white

standardAppearance = appearance
scrollEdgeAppearance = appearance
}
}
“`

これで消せます。

元記事を表示

[Swift] Concurrency の関数で戻り値が Void 型の時に出るエラーを解消する

# はじめに

案外、情報がなかったのでメモ程度に載せておこうかと思います。

# エラーに関して

Void 型に限らず、型が推測できないと同じエラーが出ます。

“`
Generic parameter ‘T’ could not be inferred
“`

# 具体例

以下のような関数があった場合に発生します。

“`.swift
func doSomething() async throws {
try await withCheckedThrowingContinuation { [weak self] continuation in
// 任意のAPIメソッドを呼び出したとする
self?.apiClient.call() { result in
switch result {
case .success(let response):
continuation.resume()
case .failure(let err

元記事を表示

【UIKit】指定した色と違う色がNavigationBarに表示される

# はじめに
UIKitは学び始めたばかりなので間違っていたり、もっと良い方法がある可能性があります。
そのような場合はコメントか編集リクエストを送ってください。

# やろうとしている事
こちらの画像をナビゲーションバーに表示して、
画像の背景と同じ色をナビゲーションバーに表示したい。
![logo-background-color.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/75c64834-258f-d210-2a21-9b16ed8a5622.png)

# 作業
まず、画像の背景のRGBを調べます。
![スクリーンショット 2022-07-09 18.35.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/46430dab-41d5-f19f-7b24-b03944e79999.png)

`rgb(85,197,0)`でした。
このRGBをナビゲーションバーに設定します
`

元記事を表示

Flutterのnamed routesの実装

# はじめに
version
参考文献 [公式Document](https://docs.flutter.dev/cookbook/navigation/named-routes)
エディタ androidstudio

# 結論

routing設定はこんな感じ

“`
return MaterialApp(
title: ‘Flutter Demo’,
theme: ThemeData(
primarySwatch: Colors.blue,
),
initialRoute: ‘/’,
routes: {
‘/’: (context) => const MyHomePage(),
‘/second’: (context) => const SecondScreen(),
},
);
“`

実際に遷移したいときは以下のようにnameを指定してください
“`
// MyHomePageに遷移する場合
Navigator.pushNamed

元記事を表示

SwiftUIカスタムイニシャライザで@Bindingの初期化方法

普段はAndroidのエンジニアをしてますが、SwiftUIを触っていたところ、initが必要なSwiftUIを作成していたところBindingが初期化されてないことにハマったので記載しておこうと思います。

“`TimeView.swift

@Binding var dateTextTime: String
@Binding var nowDate: Date

init(dateTextTime: Binding,nowDate: Binding) {
self._dateTextTime = dateTextTime
self._nowDate = nowDate
}
“`

引数の型は “Binding“と、“Binding“です。
名前の前に“_“を付けることが必要となります。

全然分からず悩みました。

普段Android開発をしてますが昔UI作るのに苦戦していたので、SwiftUiでUIを簡単に作れるようになったので、iOSの開発もやっ

元記事を表示

UIkit経験者がSwiftUIを始める際に参考になる情報のまとめ

## 書籍
[1人でアプリを作る人を支えるSwiftUI開発レシピ](https://www.amazon.co.jp/dp/B08NCXF81P/ref=cm_sw_r_tw_dp_MJAPQ985KWCCM1MQF5TK?_encoding=UTF8&psc=1)

WWDCのセッションの内容がコンパクトにわかりやすくまとまっているので、これだけでも十分と言えますが、SwiftUIに関連するXcodeの使い方は載っていないので、そこはWWDCやチュートリアルで補完すると丁度良くなります。

## Apple公式
### チュートリアル
https://developer.apple.com/tutorials/swiftui

### WWDC

#### 2021
– [What’s new in SwiftUI](https://developer.apple.com/videos/play/wwdc2021/10018/)
– [Direct and reflect focus in SwiftUI](https://developer.apple.com/videos/pl

元記事を表示

OTHERカテゴリの最新記事