iOS関連のことを調べてみた2023年08月09日

iOS関連のことを調べてみた2023年08月09日

【SwiftUI】読み込み中は要素をグレーの長方形で表示する

# はじめに
読み込み中であることをユーザーに伝える方法として`redacted`があります。
`redacted`を使ったので記録しておきます。

# サンプルアプリ
![Simulator Screen Recording – iPhone 14 Pro – 2023-08-08 at 22.12.21.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/4fe5b3ab-e187-3565-12a9-12c31e9b06ff.gif)

# 実装
“`swift
import SwiftUI

struct ContentView: View {
@State private var isLoading = false
var body: some View {
VStack(spacing: 50) {
Text(“テキスト”)
.redacted(reason: isLoading ? .pla

元記事を表示

【どこでも精進】競プロのためのC++スマホコーディング環境構築 ※iOS限定

競プロが好きな人の多くは、できるだけ多くの精進時間を確保したいと考えていると思います。そのため、通勤・通学などで電車移動する際に競プロの問題を考察するという人も多いかと思います。しかし、電車内ではパソコンを開くことができず、考察ができても実装ができないためもやもやすることが多いのではないでしょうか?

ただ、AtCoderに用意されているコードテストは、スマホから操作することを想定されていないため、非常に不便に感じるかと思います。

そこで、この記事ではアプリを使って競プロの環境構築を行うことで、比較的楽に実装を行えるようにする方法を説明します。

:::note warn
本記事は、iOSのみを対象としています。Androidにも同様のアプリはあるようですが、私が実機を持っておらずテストできないため対象外とします。Android端末をご使用の方は申し訳ございません。
:::

:::note warn
iOS15以降にする必要があります。また、iOSのバージョンによっては動かない場合があるそうです。(具体的なバージョンは不明ですが、1年ぐらい前に試してできなかったとの情報をいただいて

元記事を表示

[SwiftUI] デフォルトでfocusが当てられたTextFieldにするために頑張った

# はじめに
SwiftUIにはTextFieldというテキストを入力するためのViewがデフォルトで準備されているのですが、viewをロードした段階ですでにTextFieldにフォーカスが当てられているような方法が見つからなかったので、今回はその実装をしてみました。

# したいこと
下の画像のように、viewが読み込まれた時にデフォルトでTextFieldにフォーカスが当てられているようにしました。

また、本記事では説明しませんが、今回はクロスワードアプリを作っていたので、文字入力がされると、次のブロックへ移動して新たなTextFieldにフォーカスが当たるようにしました。

![スクリーンショット 2023-08-06 23.20.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1193085/ab9cd562-3442-8f55-a999-46752e6b3d54.png)

![スクリーンショット 2023-08-06 23.20.45.png](https://qiita-image-

元記事を表示

【SwiftUI】画像を丸くクリッピングする

# こんな感じにしたい
![simulator_screenshot_3020C2F7-B580-453C-946A-EFEB2362348D.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/2f20a026-2603-3000-85ed-e336b49bc16d.png)

# 実装
“`diff_swift
import SwiftUI

struct ContentView: View {
var body: some View {
Image(“sample”)
.resizable()
.scaledToFit()
.frame(width: 100)
+ .clipShape(Circle())
}
}
“`

# おわり
1行だけでできるの便利ですね

元記事を表示

【Xcode】Break Pointでprintデバッグする方法

# 概要
開発や競技プログラミングをしている際、
– その変数が任意のタイミングでどのような値を持っているのか
– この関数はどのタイミングで処理されているのか
といったことが気になる場面が多々あると思います。

そこで登場するのが`print`関数です。これを使うことにより、コンソールやターミナル上に変数や文字列を表示することができます。しかし、この関数にはいくつかの欠点があります。

今回は`print`関数を使うことのデメリットとbreakpointを使ったスマートな方法を紹介します。

# printデバッグとは
上記にも述べたとおり、我々が最も知っているデバッグ方法が`print`デバッグでしょう。

JavaScriptなら`console.log`、JavaやKotlinなら`println`、PHPなら`echo`、Rubyなら`puts`がこれに当てはまります。

iOSの場合では`print`もしくは`NSLog`です。

これらの関数はプログラムのある時点でデータの流れや状態を追跡することで、エラーの原因や特定をするのに役立ちます。

## printデバッグ

元記事を表示

SwiftUIで数式を入力する方法

はじめに
=
SwiftUIを学び始めてなんとなく要領がつかめてきた所で,
「そういえばSwiftUIで数式を表示する方法ってあるのかな」と考えて探していました.
UIKitであれば「iosMath」があったのですが、SwiftUIでは使えなさそうな感じ.
そこで, SwiftUIでも数式を入力する方法が見つかったのでここにアウトプットしておきます.

開発環境
=
macOS Ventura13.4.1 M1チップ
Xcode 14.3.1

使用するパッケージ
=
今回使用するパッケージは「LaTexSwiftUI」というものです.

詳細は以下より↓
https://github.com/colinc86/LaTeXSwiftUI

導入方法
=
Xcodeを起動したら「File」→「Add Packages…」で,
「Search or Enter Package URL」に「 https://github.com/colinc86/LaTeXSwiftUI 」 
を入力してパッケージをインストールします.

プログラムの例
=
ここではいくつかの簡単な使用例を載せて

元記事を表示

【SwiftUI】iOS16から使えるfontWidthってなに?

# はじめに
`fontWeight`は結構使いますが、`fontWidth`は全然使いません。
使わないのでどんな機能なのかわからなかったのでちょびっと調べてみました。

https://developer.apple.com/documentation/swiftui/view/fontwidth(_:)

# 実装
“`swift
import SwiftUI

struct ContentView: View {
var body: some View {
VStack(spacing: 10) {
Text(“fontWidth”)
.fontWidth(.compressed)

Text(“fontWidth”)
.fontWidth(.condensed)

Text(“fontWidth”)
.fontWidth(.expande

元記事を表示

上級者向け?便利なextension集①(swiftUI)

こんにちは。[フエルマネー](https://apps.apple.com/us/app/%E3%83%95%E3%82%A8%E3%83%AB%E3%83%9E%E3%83%8D%E3%83%BC/id6446435231)開発者です。

今日は僕が実際に使っているextensionをまとめました。
たくさん書こうと思いましたが長くなりそうなのでシリーズ化して書きます。
まずは基本の**型変換**から!

# extensionとは
すでに定義済みのクラスや構造体に対し、プロパティやメソッドを追加できるコードです。
例えばInt変数を倍にして返すtwiceプロパティを作ってみます。
### 拡張変数プロパティ
“`swift
extension Int{
var twice: Int{
self * 2
}
}
“`
呼び出す時は以下のように記述します。
“`swift
let num = 5
print(num.twice) // -> 10
“`
メソッドで作っても構いません。同様の結果となります。
### 拡張メソッド
“`swift

元記事を表示

iOS App Dev Tutorialsを読んで実際にやってみた。その8

## 前回の記事
[iOS App Dev Tutorialsを読んでみた。その7](https://qiita.com/shomiya181210/items/48c46d63cc55bec11453)
前回の記事を読んだ後に、この記事をご覧ください。
## 今回の範囲
[Passing data with bindings(バインディングでデータを受け渡す)](https://developer.apple.com/tutorials/app-dev-training/passing-data-with-bindings)
8回目は、前回行った編集機能を拡張します。
##内容の要約
### 1.テーマビューを追加する。
– ViewsグループにThemeView.swiftという名前の新しいSwiftUI Viewファイルを作成します。
“`ThemeView.swift
import SwiftUI

struct ThemeView: View {
var body: some View {
Text(“Hello, World!”)
}
}

元記事を表示

【SwiftUI】Viewに丸角背景を追加する

# はじめに
Viewの背景に色をつける方法は様々あります。
ただ、どれがベストな方法かわからないのでコメントで教えていただきたいです

# 作りたいUI
![Simulator Screenshot – iPhone 14 Pro – 2023-08-04 at 22.27.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/42dfb30d-8e2c-3212-e15f-fd842d03beeb.png)

# 実装
### 良さそう
“`swift
Text(“テキスト”)
.frame(width: 120, height: 60)
.background(Color.cyan, in: RoundedRectangle(cornerRadius: 10))
“`

### これも良さそう
“`swift
Text(“テキスト”)
.frame(width: 120, height: 60)
.background(Color.cyan)

元記事を表示

IOSのbuild時のアップロード先とbranch運用・CICDを考えてみる

## 背景
普段、flutterで開発をしていて、Iosのbuildをする時に
、`ProvisioningProfileとp12ファイルとcertificateとIdentifiers(バンドルID)が必要`になるが、これに付け加えて、`開発環境と、本番環境を区別してアプリをbuild`しないといけない。用語が出てきてかなり初見だとかなりわかりづらいのでまとめる。

swift開発者にも通じる部分はあるのかなと思いましてあえて、flutterとtitleには入れていません。

## Identifiers(バンドルID)・ProvisioningProfile・p12ファイル・certificateのロードマップ

![空白の図(4).jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1466470/89fa3d5d-e77d-3069-3fa3-ceab461e0bdd.jpeg)

アプリをbuildするとき、`.ipa`を得るときに鍵を作って、署名が必要になる。その鍵を作る過程で用語が出てくるの

元記事を表示

SwiftのOptionalとDictionary

# 経緯

ここ最近、久しぶりに iOS, Swift と向き合っており、思い出しながら勉強しながら開発を進めていたある日、Swift の `[String: Any]` な Dictionary 型を Optional な値で初期化しようとすると警告が表示されることに気がつきました。

“`swift
let strValue: String? = “someValue”
let intValue: Int? = 2
let dict: [String: Any] = [
“key”: strValue, // Expression implicitly coerced from ‘String?’ to ‘Any’
“key2”: intValue // Expression implicitly coerced from ‘Int?’ to ‘Any’
]
“`

この警告自体は `as Any` すると解消されます。

“`swift
// 警告が出なくなる
let dict: [String: Any] = [
“key”: strValue as An

元記事を表示

[SwiftUI / Auth0]Auth0 を利用した iOS アプリの開発

## この記事を書いた動機
Auth0 を利用した iOS アプリ(SwiftUI)の開発に関する記事はあるが、画面の表示を担当する `ContentView` に認証に関する処理を実装するものが多かった。

メンテナンスしやすいように認証に関する処理を別のクラスに実装したので、その備忘録として書いた。

## この記事で書くこと・書かないこと
### 書くこと
– Auth0 を利用した iOS アプリ(SwiftUI)開発

### 書かないこと
– Auth0 のアカウント作成方法
– Auth0 で新しい Application(Native App) の作成方法
– Auth0 でテストで使用するユーザーの具体的な作成方法
– Xcode を利用して新しいプロジェクト(SwiftUI)を作成する方法
– Xcode の `Add Package` を利用してライブラリを導入する方法
– プロジェクトに `.plist` ファイルを追加する方法

:::note warn
上記の内容は記載しないため、具体的な方法については他の記事を確認すること
:::

## Auth0 とは

元記事を表示

【SwiftUI】ScrollViewのバウンスを無効にする

# はじめに
バウンスありとなしではアプリの印象がとても変わります。
SwiftUIのScrollViewはバウンスがありで、変更することができないので`SwiftUI-Introspect`を使用してバウンスを無しにしてみます
|||
|-|-|
|![Simulator Screen Recording – iPhone 14 Pro – 2023-08-03 at 21.06.12.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/87a5fce6-1ef3-2cd3-4a48-e7e401b7a980.gif)|![Simulator Screen Recording – iPhone 14 Pro – 2023-08-03 at 21.05.50.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/e2a712e8-3fd5-caca-5b1c-80e46c6dee1c.gif)|

ht

元記事を表示

レアカードのホログラムみたいなカスタムのCIFilterを作ってみた

# レアカードのホログラムみたいなカスタムのCIFilterを作ってみた
TCGのレアカードのホログラムみたいなエフェクトをかけるCore ImageのカスタムのFilterをCIColorKernelを使って作成してみました

![holo.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214313/2fa17830-3feb-cdc3-b7b9-42ef2ea9b2fe.gif)

# 実装
次の3ステップで実装できます
Voronoi図?とかの話は、それぞれのセクションで取り扱います

1. GameplayKitを使ってVoronoi図を作成する
1. カラフルなVoronoi図に変換する
1. ベースの画像にカラフルなVoronoi図を重ねる
1. rotation3DEffectの回転角度に合わせて色を変える

## GameplayKitを使ってVoronoi図を作成する
### Voronoi図とは

> *Voronoi図とはある距離空間上の任意の位置に配置された複数個の母点(英: s

元記事を表示

【Xcode・Swift エラー解決】Thread 1: signal SIGABRT

## はじめに
コレクションの実装の際にエラーが発生し、解決までに時間がかかったので解決方法をメモします。

## エラーの背景
私の場合は、collectionViewCellのインスタスを生成する際に“「Thread 1: signal SIGABRT」“というエラーが発生しました。

![スクリーンショット 2023-08-03 11.12.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072069/a7df6b2f-8b96-4fc6-794e-3e08b718d63b.png)

## 原因
インスタンス化するViewの**Custom Classにクラス名が設定されていなかった**ので、インスタンス化する際にViewの認識ができず、エラーで落ちていたと考えられます。

![スクリーンショット 2023-08-03 11.23.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072069/c5

元記事を表示

NSError. localizedDescriptionの文字列をカスタマイズする

`NSError.localizedDescription`のデフォルトのフォーマットは以下です。

> The operation couldn’t be completed. (\ error \.)

日本語だとこうなります。

> 操作を完了できませんでした。(\エラー\

“`swift
let error = NSError(
domain: “HogeErrorDomain”,
code: 1000,
userInfo: [“key1”: “value1”, “key2”: “value2”]
)
print(error.localizedDescription)
“`

“`
The operation couldn’t be completed. (HogeErrorDomain error 1000.)
“`

`userInfo`のキーに`NSLocalizedDescriptionKey`が含まれている場合、その値が`localizedDescription`の値に

元記事を表示

【SwiftUI】Listのセパレーターを両端まで伸ばす

# はじめに
Listのセパレーターは微妙に左側にスペースがあるんですよね
このスペースを消したいです。
![simulator_screenshot_B16016A9-4155-4875-BD2A-AA13B73A014F.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/5a298dd2-affd-11f6-8602-a974db709124.png)

しかし、SwiftUIの標準機能ではないので`SwiftUI-Introspect`を使って実装します

https://github.com/siteline/SwiftUI-Introspect

# ライブラリのインストール
全体的な流れはこちらを参考にしてください

https://tech.amefure.com/swift-package-manager

:::note warn
**注意**
`SwiftUIIntrospect`のみチェックをいれます
![スクリーンショット 2023-08-01 16.18.26.pn

元記事を表示

【Swift】UIパーツとコントローラーが紐づかない時の対処法

## はじめに
UIパーツとコントローラーの紐付けに少し苦戦したので、メモを残します。

## 現象
いつものように、「controlキー」を押してImageViewをドラッグしてコントローラーと紐付けしようとしたところ、何も起きない、、、
えっどうして???

## 原因
結論を言うと、“ViewクラスにViewControllerが設定されていない“からです。

## 解決方法
Viewの中の「File’s Owner」のクラスを紐付けたいコントローラー名に設定してください。そうすれば、ViewとContorollerは紐づくはずです!

viewとコントローラーの名前が一緒なのでややこしいですが、以下は、「BottomPopViewCell.xib」と「BottomPopViewCell.swift」というファイルを紐づけています!
![スクリーンショット 2023-08-02 14.42.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072069/8ebd0f2c-dffe-a6d2

元記事を表示

新しいmacOS M1マシーンでどのくらいビルド時間が速くなるか調べてみた!

# はじめに
皆さんこんにちは!
CircleCIカスタマーサクセスマネージャーの小島です。
CircleCIカスタマーサクセスチームでは、お客様がCircleCIを最大限、効率良く、お客様の目標に合わせて活用していただけるよう、日々お手伝いをしております。
最近は暑くて暑くて、趣味のスキューバダイビングをするたびに早く人間を辞めて、魚になりたいと思っています。

3月にCircleCIがリリースした、macOSのM1マシーンはもう試されましたか?
CircleCIはビルド時間が速くなると言っているけど、消費クレジットが増えるし、、、
と心配されている方も多いようです。
本日は実際に速度の比較を行って、どのくらい速くなるか試してみたいと思います!

# 目次
– 利用プロジェクトについて
– Configファイルの設定
– ワークフローの実行結果
– macOSマシーンについてのお知らせ
– おわりに

# 利用プロジェクトについて
今回、CircleCIのソリューションエンジニアのTadashiさんのブログ[Tadashiさんのブログ](https://tadashi0713

元記事を表示

OTHERカテゴリの最新記事