iOS関連のことを調べてみた

iOS関連のことを調べてみた

【ios 17】新機能とアップデートの魅力

## 【ios 17】新機能とアップデートの魅力

こんにちは。今回は、ios 17について初心者エンジニアに向けて、新機能とアップデートの魅力についてご紹介します。

## 新デザインとインターフェースの革新

ios 17では、新たなデザインとインターフェースが導入され、使いやすさと視覚的な魅力が大幅に向上しました。これにより、ユーザーはより直感的に操作できるようになり、素晴らしいユーザーエクスペリエンスを体験することができます。

新たなデザインとインターフェースの革新によって、アプリの起動速度や画面遷移のスムーズさも向上しました。これにより、ユーザーはストレスなく素早くアプリを利用することができます。

以下に、新デザインとインターフェースの革新に関するサンプルコードを示します。

“`swift
// タブバーのアイテムの設定
tabbaritem.title = “ホーム”
tabbaritem.image = uiimage(systemname: “house”)
tabbaritem.selectedimage = uiimage(systemname: “hous

元記事を表示

【Swift】OptionSetという複数の値をまとめて管理できるものがあるらしい

# はじめに
デフォルトで用意されているコードスニペットを見ていたら使ったことのない機能を見つけたので使ってみました。
![スクリーンショット 2023-11-21 22.35.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/0ee0c7d7-186d-371e-2e98-3b46fc52f5b0.png)

# サンプルアプリ
![Simulator Screen Recording – iPhone 15 – 2023-11-21 at 22.34.58.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/0ea152a9-4188-f89a-d4b0-dd8d86c8fe52.gif)

# 実装
“`swift
import SwiftUI

struct ContentView: View {
@State private var sectionOptions: Sect

元記事を表示

【Swift】PlaygroundでPreviewできるらしい

# はじめに
PlaygroundでViewをPreviewする事ができることを知りました。
![スクリーンショット 2023-11-20 20.22.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/42988a25-a24f-caf0-ce50-897d7591a80c.png)

# 実装
“`swift
import SwiftUI
import PlaygroundSupport

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

元記事を表示

【SwiftUI】KeyframeAnimation使ってみた

# はじめに
iOS17から使えるKeyframeAnimationを調べならが使ってみたのでちょっとまとめたのを投稿しておきます。

# 最小単位のサンプル
“`swift
import SwiftUI

// `KeyFrameAnimationValues`で指定した値を`keyframeAnimator`で使用できる
struct KeyFrameAnimationValues {
var scale = 1.0
}

struct ContentView: View {
var body: some View {
VStack {
Image(systemName: “heart.fill”)
.resizable()
.scaledToFit()
.frame(width: 100)
.foregroundStyle(.red)
.keyframeAnimat

元記事を表示

【SwiftUI】プレビューでカスタムテキストスタイルの Dynamic Type に対応する

# はじめに

Dynamic Type とはフォントサイズをユーザが調整できるようにする OS の機能です。

アプリ内設定ではなく、設定アプリから端末全体に対して設定するやつですね。

公式が用意している [`Font.TextStyle`](https://developer.apple.com/documentation/swiftui/font/textstyle) を使用することで簡単に対応できます。

ただし、`Font.TextStyle` はフォントサイズがガチガチに決められているためデザイン指示がある場合などは対応しきれないことが多いでしょう。

というわけで、この記事では**カスタムのテキストスタイルの Dynamic Type 対応方法**について紹介します。

# 実装方法2パターン

上記に対応する場合、パターンとしては以下の二つがあります。

1. [`UIFontMetrics`](https://developer.apple.com/documentation/uikit/uifontmetrics) を使用するパターン
2. [`Scaled

元記事を表示

KMP + Koin で DI (Dependency Injection)

# はじめに

今の時代、モジュール間は疎結合、ユニットテストはスタブを注入!💉💉💉

というのが定番みたいだし、実際にも開発しやすいので、
[KMP](https://www.jetbrains.com/kotlin-multiplatform/)[^1] でも Dependency Injection(以下DI)していきたいです。

KMP は開発言語が Kotlin なわけですが、
Android 向けに [Dagger Hilt](https://developer.android.com/codelabs/android-dagger-to-hilt?hl=ja#0) という DI フレームワークがありつつも、残念ながら KMP 非対応です。

じゃあ KMP の場合は何を使えば良いのか?

ということで、自分がいちばん慣れてる [Koin](https://insert-koin.io/) を使ってDIを実現してみます[^2]。

# ライブラリ追加

まず、これがないことには始まりませんので。
[ここ](https://insert-koin.io/docs/refere

元記事を表示

【Swift】配列の全ての要素が条件に一致しているかをチェックする

# はじめに
配列の全ての要素が条件に一致しているかをチェックする機能があることを知ったので記事にしておきます。

# 実装
“`swift
let array = [“acerola”, “almond”, “apple”, “avocado”]

// 配列の全ての要素にaが含まれているかを判定
array.allSatisfy { $0.contains(“a”) } // true

// 配列の全ての要素にbが含まれているかを判定
array.allSatisfy { $0.contains(“b”) } // false

// 配列の全ての要素にcが含まれているかを判定
array.allSatisfy { $0.contains(“c”) } // false
“`

:::note warn
空の配列に対しては常にtrueが返されるので注意が必要です。
“`swift
let array = [String]()
array.allSatisfy { $0.contains(“a”) } // true
“`
:::

# おわり
これ結構便利ですね
`al

元記事を表示

Indian Website Company

![Indian Website Company Logo 400400.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623788/3614a547-e483-9d9c-4016-adcf997131f0.png)

Indian Website Company is a leading website design company in India based in Indore.

元記事を表示

AssetsからTextureResourceをLoadできない

Vision OS用にRealityKitでこんな感じで画像からTexttureを生成しようとしたのですが、画像によっては何故かエラーが発生してしまいました。

画像は、Assetsに入れてあり、大きさも同じなのですが、1はOKでも、2は読めないみたいな事象が起きており、悩んでいたのですが、

“`
guard
let texture1 = try? TextureResource.load(named: “1”),
let texture2 = try? TextureResource.load(named: “2”)
else {
// error
}
“`

Assetsからの画像読み込みだと暗くなるという記事を見つけたので、もしやと思い、Bundleから読み込むようにしてみました。すると、

“`
guard
let url1 = Bundle.main.url(forResource: “1”, withExtension: “png”),
let texture1 = try? TextureResource.load(cont

元記事を表示

【SwiftUI】TextにURLを表示させようとすると勝手に青くなるのやめてくれ

# はじめに
TextにURLを表示させようとすると勝手に青くなってしまいます。
`foregroundStyle`などを指定してもずっと青いので💢

# 問題
`Text`にURLを表示させようとするとURL部分が青くなります。
“`swift
import SwiftUI

struct ContentView: View {
var body: some View {
Text(“https://qiita.com/”)
}
}
“`
![スクリーンショット 2023-11-17 20.00.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/71ecc92a-1638-9b99-bd72-e8503d488981.png)

文字+URLだとURL部分だけ青くなります。
“`swift
import SwiftUI

struct ContentView: View {
var body: some View {
Te

元記事を表示

SwiftUIで実装した公式AdMob Bannerのコードを修正する

https://developers.google.com/admob/ios/swiftui

iOSに広告を表示するためのライブラリAdMobは公式にSwiftUIに対応しています。

# Bannerのコード
広告にはいろいろな種別がありますが、バナーのコードを見ていきます。
下記のコードは、公式に沿って実装し、ビルドが通るようにしたコードになります。

“`swift BannerViewControllerWidthDelegate.swift
protocol BannerViewControllerWidthDelegate: AnyObject {
func bannerViewController(_ bannerViewController: BannerViewController, didUpdate width: CGFloat)
}
“`

“`swift BannerViewController.swift
class BannerViewController: UIViewController {
weak var delegate

元記事を表示

【SwiftUI】動画を再生する

# はじめに
SwiftUIで動画を再生するサンプルを記事にしときます。

# サンプルアプリ
![Simulator Screen Recording – iPhone 15 – 2023-11-16 at 21.38.46.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/ac3111c7-93e3-bd7c-d306-65e1adbaccff.gif)

# 実装
### インターネット上にある動画を再生する
“`swift
import SwiftUI
import AVKit

struct ContentView: View {
let url: URL = URL(string: “https://taishin-miyamoto.com/sample.mp4”)!

var player: AVPlayer? {
.init(url: url)
}

var body: some View {
VideoPla

元記事を表示

【Swift】Firestoreのエラーをローカライズする

# はじめに
Firestoreは便利ですが、SDKで定義されているエラーのerrorDescriptionは英語でそのまま使うとユーザーにとってわかりにくいものになってしまいます。
そこでFirestoreのエラーを自前でローカライズしてみようという記事です。

# 実装
StringCatalogを使うために`String(localized:)`で実装しています
“`swift
import FirebaseFirestore
import FirebaseFirestoreSwift
import Foundation

public enum PostError: Error, LocalizedError {
case firestore(FirestoreErrorCode.Code)

public var errorDescription: String? {
switch self {

case .firestore(.OK):
return String(localized

元記事を表示

YouTuberはじめてみました

## YouTuberはじめてみました

先日、岸川さん、松舘さん達iOSデベロッパーとの飲み会で、どういう経緯でそうなったか思い出せませんが、「吉川さんなんか動画やってよ」みたいな話が出てきて、そういえば以前から YouTuberやるなら是非やってみたいと思った企画があったのを思い出しました。

それは、アプリをゼロから開発制作する過程を動画化してみる事です。なんか浦沢直樹の「漫勉」みたいですね。自分は浦沢直樹ほどの大御所ではありませんが、iOS開発者界隈では、まぁまぁのプレゼンスはあるかなと自負しております。

で、ここ何日かほぼ毎日XcodeとSwiftでのアプリ開発過程を深夜、ぶつぶつ独り言をつぶやきながら、アプリの開発を録画してきました。動画時間が長いので、実時間以上の時間を掛けて編集している余裕はないのと、セミライブ感を出すために、ほぼそのままYouTubeに公開していますが、ストックができるまでステルスでアップロードしていました。

ある程度ストックが貯まってきた事から、今回Qiitaの記事として発表する事にしました。動画のプレイリストは以下の通りです。

https:/

元記事を表示

SwiftUIでダイアログ

今回はSwiftUIでダイアログを表示する話。
様々なダイアログを表示してモデルのプロパティを変更できる機構を考えます。

開発アプリPR

3分作曲-musicLine-

# はじめに

モデルのプロパティを

元記事を表示

TCAでGithubリポジトリ検索アプリを作ってみよう①

# はじめに
TCAは注目度は高いと思っていますが、僕の(狭い)観測範囲では導入事例はまだあまり多くない印象です。

僕が関わっているプロダクトではガッツリTCAを使っているので、国内でもっともっとTCAが盛り上がってくれないと困る…!w

ということで、国内でのTCAの盛り上がりに少しでも貢献できればと思い、実践的なサンプルアプリケーションを作って解説記事を書いてみることにしました。

ちゃんと解説しようと思うと結構なボリュームになりそうなので、いくつかの記事に分けて公開していく予定です。

# 想定読者
TCAを全く知らない方向けの記事ではありません。
少なくとも[公式チュートリアル](https://pointfreeco.github.io/swift-composable-architecture/main/tutorials/meetcomposablearchitecture)は一通り目を通し、簡単にでも自分でサンプルアプリを作ったことがある方を想定しています。

簡単なサンプルアプリを作れるレベルから一歩先に進むために必要な技術要素を学べることをイメージしています。

元記事を表示

PencilKitで高解像度の写真に絵を描く

## はじめに

PencilKitで高解像度の画像をスクロールして絵を描けるようにする方法で悩んだので、備忘録です。

## 概要

– PKCanvasViewはStoryboardで設定
– 高解像度の画像を表示する場合はスクロールして絵を描けるようにする
– 画面に収まる画像の場合は画面中央に配置して絵を描けるようにする
– 画像外は絵を描けないようにする

## ソースコード
“`swift
class ViewController: UIViewController {

@IBOutlet weak var canvasView: PKCanvasView!
private let imageView: UIImageView = UIImageView()
private let pkToolPicker = PKToolPicker()

override func viewDidLoad() {
super.viewDidLoad()
setupPencilKit()
}

元記事を表示

【SwiftUI】TCAのNavigationStackStoreを使うための最もシンプルなサンプル

# はじめに

NavigationStackStoreを使うための最もシンプルなサンプルを作成したのでコピペして使ってください

# サンプルアプリ
![Simulator Screen Recording – iPhone 15 – 2023-11-14 at 22.22.05.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/6d5a45d7-6f32-079f-b7c3-c44e52fd67ec.gif)

# 実装
### ParentView
“`ParentView.swift
import SwiftUI
import ComposableArchitecture

struct ParentView: View {
@ObservedObject private var viewStore: ViewStoreOf

let store: StoreOf

public init(

元記事を表示

5歳児向けの依存性注入から考えるアプリ開発の DI

# 本記事のターゲット

– DI の基本を理解しているが、もう少し理解を深めたい
– アプリ開発(Android/iOS)で DI を採用したことがある。あるいは、これから採用しようとしている

# キーワード

– Dependency Injection
– Service Locator
– Property Injection
– Constructor Injection
– Composition Root

# はじめに

まず、英語版 Wikipedia の [Dependency Injection](https://en.wikipedia.org/wiki/Dependency_injection) の記事に面白い喩え話が載っているので、引用したい。

> Dependency injection for five-year-olds
>
> When you go and get things out of the refrigerator for yourself, you can cause problems. You might leave the do

元記事を表示

【Flutter】Xcode 15でiOS 17のシュミレーターが起動しないUnable to get list of installed Simulator runtimes

# はじめに
なぜかiPhoneシュミレーターが起動しない事件が発生した。。。。
「またか・・」
とため息をつきながら👇の対応を行った。

https://qiita.com/kokogento/items/465984cad8624f483782

**しかし、今回はいくらキャッシュを消してもシュミレーターが起動しない!!!!**

「何かがおかしい:expressionless:」

そう思いとりあえず`flutter doctor`で確認

“`console
% flutter doctor (git)-[master]
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.13.3, on macOS 14.1 23

元記事を表示

OTHERカテゴリの最新記事