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

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

オプショナルな引数の型パラメータを省略する方法(SwiftUI)

## はじめに

例えば以下のように、任意でヘッダーを付けられるビューがあるとします。

“`swift:FooView.swift
import SwiftUI

// FIXME: 修正する必要がある
struct FooView: View {
@ViewBuilder private let content: () -> Content
@ViewBuilder private let header: (() -> Header)?

var body: some View {
VStack {
if let header {
header()
}

content()
}
}

init(@ViewBuilder content: @escaping () -> Content, header: (() -> Header)? = nil) {

元記事を表示

SwiftLintの「Currently running SwiftLint x.y.z but configuration specified version a.b.c.」エラーの解決法

SwiftLintの記事はシリーズになっています。
記事を順番に読み進めると、SwiftLintを使いこなせるようになります。

– [Swiftの静的解析ツール「SwiftLint」のセットアップ方法](https://qiita.com/uhooi/items/bf888b53b4b8210108aa)
– [SwiftLintの全ルール一覧(Swift 4.2版)](https://qiita.com/uhooi/items/7f5d6cf2b240f60ba1ed)
– [SwiftLintで追加・変更・廃止されたルールまとめ(Swift 4.2→5.1.2版)](https://qiita.com/uhooi/items/8e9767c2e746f4171ded)
– [SwiftLintで追加・廃止されたルールまとめ(Swift 5.1.2→5.3.1版)](https://qiita.com/uhooi/items/10b9e49d3bd6f1344cad)
– [SwiftLintのオレオレカスタムルール一覧](https://qiita.com/uhooi/items

元記事を表示

【SwiftUI】AIでUIを作る

## はじめに
AIでUIを作れるのは何となく目にしたり聞いたりしたことはありましたが実際触ったことがなかったので調べてみました。そこで見つけたのがGalileo AIです。

https://www.usegalileo.ai/explore

## Galileo AI
簡単なテキストプロンプトから、UIデザイン(モバイル,Web)を作成してくれるAIツールです。
早速使ってみます。

### Text to UI
「chat list view」 をプロンプトとして打ち込んだ時の出力です。
それっぽいのが出来上がりました!

![スクリーンショット 2024-02-15 6.27.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1201315/2a48f135-1f88-9757-e441-c97f3ef54ae5.png)

### Image to UI
もう一つ、画像からUIを生成する機能があります。
真似したいアプリ、Webの画像を渡してプロンプトに沿ったUIを生成してくれます。下

元記事を表示

AIで画像コンテンツを作成しつつFlutterでアプリ開発

## はじめに

どうも、@nittannittanです。

趣味でAndroid/iOS/Webアプリを作成しているアニメオタクです。

今回は、AIで画像コンテンツを作成しその画像を利用したアプリを開発したので、利用技術などを紹介したいと思います。

AIでの画像生成にはStable Diffusion Web UIを、アプリ開発にはFlutterを利用しました。

## AI画像生成へようこそ

まず手始めに、ローカル環境へStable Diffusion Web UIをインストールして操作方法や基礎的なことを学びました。
下記のサイトが参考になります。

Stable Diffusion web UIのインストールと使い方

### モデル探しの奇妙な冒険

なんとなく使い方が理解できたら次は生成したい画像にあったモデルを探す旅の始まりです。
下記サイトで探しわまったり、モデルを比較しているサイトもGoogle検索で見つかるので手当たり次第に試してみましょう。良し悪しがあって面白いです。

https://civitai.c

元記事を表示

Xcodeを使用してiOS simulatorを追加する方法

## 概要
MaxにiOS simulatorを追加する方法を投稿します。

既にX-codeがインストールされていることを前提としています。

## 環境
PC: Mac v 14.3
Xcode: v 15.2

## 手順1
Xcodeを開いてmacのメニューバーの`Window`をクリック。
その後、`Devices and Simulators`をクリック。
![スクリーンショット 2024-02-15 14.48.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/952574/d3e8591a-0c55-517d-18ab-27eff88fd973.png)

画面左上の`Simulators`ボタンをクリックして、画面右下の`+`ボタンをクリック
![スクリーンショット 2024-02-15 14.49.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/952574/c29cf0c2-7b5b-09e7

元記事を表示

iOS, iPadOSからphonelink(tel:…)を開く仕様差分に苦労した話

## まえがき

アプリ内からdeeplinkで電話アプリを起動する実装で、基本設計時に見落としていたハマりポイントがあったので共有。
今回のGOALは、[PhoneLink](https://www.notion.so/lancers-group/%22%3Chttps://developer.apple.com/library/archive/featuredarticles/iPhoneURLScheme_Reference/PhoneLinks/PhoneLinks.html%3E%22)を処理できる端末を使用しているユーザーにのみ、Phone Linkのdeeplink関連の機能を提供すること。そのために、**デバイスがPhoneLinkを使用できるか判断できるようにする**。

## FaceTimeとPhoneアプリの仕様差分について

読み進めていく前に理解しておきたい機能群を抜粋.

### FaceTime

– Wi-Fi経由でAppleユーザーの端末(iOS, iPadOS)への通話、デバイスのセルラー経由での通話ができる

> WiFi経由で、またはサポートさ

元記事を表示

iOS14環境でListの罫線が欠ける問題の解消方法

## はじめに

iOS14環境でListを使用するとコンテンツの下に置いた罫線のうち、何箇所かがレンダリング時に消えてしまう問題が発生。チームの開発メンバーに解決方法をお聞きしたので、備忘録として記載。

## 結論

少々トリッキーだが、Listのアイテムの**上に置くことで解決**する

サンプルコードは以下の通り

“`
import SwiftUI

struct TextData: Identifiable {
var id: String {
text
}
// textは一意であるとする
var text: String
}

struct ContentView: View {
// サンプルデータ
let textDataList: [TextData] = [.init(text: “test1”), .init(text: “text2”), .init(text: “text3”)]

var body: some View {
List {
Fo

元記事を表示

ReactNativeでOSや端末ごとに条件分岐してみた【Platformを用いて】

OSや端末ごとに条件分岐して値を変更したり、表示するテキストを変更する必要があったので、記載していきます。

https://reactnative.dev/docs/platform

を参考に進めていきます。

# 概要
### Platform.OS
![スクリーンショット 2024-02-10 6.58.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/799713/3f041baa-d4b0-8133-3b74-a812205eae34.png)
– OSをenumで管理しています

### Platform.isPad
![スクリーンショット 2024-02-10 6.58.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/799713/0c95ba39-2aa2-2fcc-2e86-08bf8582d0e1.png)
– iPadかどうかを、boolean型で返します
### Platform.sele

元記事を表示

iOS17.2のネットワーク共有はIPv6だけになっていた

Xで話題に上がったので調べてみたところ、iOS17.2のネットワーク共有ではIPv4通信は行われず、IPv6のみになっていた模様。

AppleCommunityでも話題に上がっていました。
どうやらiOS17.2ではIPv4アドレスがアサインされなくなった、とのこと。

https://discussions.apple.com/thread/255346180?answerId=259959698022

実際にiPhoneのネットワーク共有をonにしたところ、iPad上のIPv4の表示は192.0.0.2/32となっています。

![スクリーンショット 2024-02-15 1.52.41.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/601755/f2312dde-637e-75b0-0cfa-68ea950fee92.jpeg)

Wiresharkで見てもインターネット通信はすべてIPv6で行われていることが確認できました。

なお、IP設定を手動にしてDHCPを使用しない場合、ネットワ

元記事を表示

【SwiftUI】ScrollView内のコンテンツがスクロールを必要とするまでスクロールを制限する(iOS16.4)

# はじめに
iOS16.4から`scrollBounceBehavior`が使用できるようになりました。
これはScrollViewだけでなく、Listにも使用できるようです。

# サンプルアプリ
ScrollView内のコンテンツが少ない時はスクロールできません。
![Simulator Screen Recording – iPhone 15 Pro – 2024-02-14 at 22.33.47.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/9741b78c-41d8-4a2a-311e-f994bde21b39.gif)

# 実装
“`swift
import SwiftUI

struct ContentView: View {
struct Item {
let id = UUID()
let color: Color
}

@State private var items = [Item]()

元記事を表示

【限界MAUI難民】MAUIに至る旅Vol.1 Browser APIで開いたアプリ内ブラウザ(SFSafariViewController)のDismissをハンドリング🚀💖【iOS】

# プロローグ 〜限界MAUI難民〜
Xamarinのサポートエンドに追い立てられて、MAUIへのダイブを決めた先駆者たち!
リゾート島だと思っていたら、ここはまさかの限界集落!?

正式リリースされた筈が、そこで見たのはバグの __”玉手箱(トレジャーボックス)”__ !?💔😂

~~Microsoftのプロダクトでさえ採用されてないって本当?
😱~~ウチらこれからどうなっちゃうの~~!?😭🚀💔

# 今日のお題:💖🚀iOS MAUIでアプリ内ブラウザがクローズされたのを検出できない問題、どうする?🤔💡✨

iOSで`Browser` API使ってアプリ内ブラウザ出したのはいいけど、ブラウザ閉じたの検出できない😱😱😱どうしよう〜、助けて〜😭💔

### 実行環境(前提条件)📚
– **.NET MAUI**:v8.0.3
– **Visual Studio 2022**:v17.x 以上
– **iOS SDK**:iOS 14 以上
– **Microsoft.Maui.Essentials**:v8.0.3

## (そもそも)Browser APIってなんだっけ?
.NE

元記事を表示

LicensePlistの実装方法[Swift]

# LicensePlistとは

『license-plistというCLIツールを実行すると、そのプロジェクトで依存しているライブラリを収集して、iOS設定アプリ上に載せられる形式のplist群を生成してくれます』(開発者記事抜粋)

リリースしたアプリにオープンソースのライセンスを表示させる実装方法です。
アプリの設定画面で企業で開発したなどで見ることができますが、個人アプリでも仕様したものは記載した方が良いです。
その際に必要なXcodeでの実装方法となります。
UIKitでもSwiftUIでも実装方法は一緒です。

アプリの設定画面を開くと『Licenses』と表示されるようになってタップすると使っているライブラリを全て表示してくれます。

アプリの設定画面に表示されるようになります

元記事を表示

【Swift】割り算の余りを求めたい

# はじめに
ちょー初歩的なことなんですけど、知らなくて焦ったことがあったので記事にしておきます。

# 何が起きたのか
私は割り算のあまりは`%`で求められると思っていたのですが、こんなエラーが発生しました。

“`
‘%’ is unavailable: For floating point numbers use truncatingRemainder instead
“`

あれ、`%`って使えなくなったの?って思ったんですが違いました。

`%`が使えるのはIntだけみたいです。

私はそれを知りませんでした。

では、DoubleやFloatなどの浮動小数点型ではどのように余りを求めるのでしょうか?

# 実装
### Int
“`swift
// ❌
func calcIntRemainder1(dividend: Int, divisor: Int) -> Int {
return dividend.remainder(dividingBy: divisor)
}
// ✅
func calcIntRemainder2(dividend: Int, div

元記事を表示

React NativeでiOSのExternal Link Account APIに対応する

## 🔰 はじめに
2022年3月あたりに、iOSのリーダーAppにおいてアカウント登録などを目的とする外部サイトへのリンクを設置することが可能となりました。
それに伴い、External Link Acccount APIというものを使用する必要があるのですが、React Nativeでの実装方法が調べても見つからなかったため、備忘録and誰かの参考になればと思い手順を書くことにしました。
なお、下記の手順の前にXcode側の設定が諸々必要なのですが、[詳細な公式ドキュメント](https://developer.apple.com/jp/support/reader-apps/)がすでに存在しているので、こちら参考にしていただければと思います!
今回はXcode側の設定が終わった後の、外部リンク用モーダルシートを開く方法のみ書くことにします!

## 🏁 この記事のゴール
React NativeのiOSアプリで:point_down_tone5:のモーダルシートを開く(以下`外部リンク用モーダルシート`とします)
オブジェクトプールで大量のオブジェクトを管理しよう!

![blog_2023_programmer_tech11 (1).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3565926/705fd0fd-ec10-96b6-1506-e75dccf15c4c.jpeg)

こんにちは。トイロジック新人プログラマーのS.Gです。トイロジックでは毎年新人研修としてiosアプリを開発します。本記事では昨年リリースされた[『バクバクバック』](hhttps://apps.apple.com/jp/app/%E3%83%90%E3%82%AF%E3%83%90%E3%82%AF%E3%83%90%E3%83%83%E3%82%AF/id6450744561 “『バクバクバック』”)で大活躍したオブジェクトプールについて解説したいと思います。

# オブジェクトプールとは
私たちが開発したバクバクバックは、大量の敵から逃げながらクイモンにバク食いさせるというアクションゲームです。

そのため大量のオブジェクトを扱うことになるのですが、どのくらい大量かというと…

!

元記事を表示

Introduction To Combine Framework: Reactive Programming For iOS App Development

Reactive programming represents a paradigm shift in modern iOS application development. It has revolutionized how developers handle asynchronous data streams and events. Further, the significance of reactive programming in iOS app development cannot be underscored. It offers a more declarative approach to managing state and effects in sync with the complex, event-driven nature of today’s applications.

Enter the Combine framework. Developed by Apple to facilitate reactive programming in Swift,

元記事を表示

【SwiftUI】星の数で評価できるViewを作成する

# はじめに
映画評価や書籍評価など、評価系のアプリは意外と多いはずです。
AppStoreのような星の評価ができるViewを調べると、整数部分を星の数として、実装しているものが多くありました。

しかし、少数部分も反映できるViewはなかったので、考えてみました

# サンプルアプリ
![Simulator Screen Recording – iPhone 15 Pro – 2024-02-12 at 18.37.14.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/f3e502fb-68c4-0318-ff19-b879836399b2.gif)

# 実装
“`swift
struct ReviewView: View {
@Binding var rate: CGFloat

var rootWidth: CGFloat

var body: some View {
ZStack(alignment: .leading) {

元記事を表示

ReactNativeでアプリのシステム設定画面に遷移する

起動しているアプリに関わるシステム設定の画面へ遷移する方法を記載していく。

公式ドキュメントを参考にする。

https://reactnative.dev/docs/linking?language=typescript#opensettings

## 内容
`Linking`ライブラリーを用います。
`Linking`はアプリのリンクを操作するためのインターフェイスを提供しています。

### ライブラリーをインポート
“`tsx
import { Linking } from ‘react-native’;
“`

### アプリの設定画面に遷移する

“`tsx

元記事を表示

Découvrez les services IPTV premium sur MeilleurIPTV.

Découvrez les services IPTV premium sur MeilleurIPTV. Explorez une large sélection de chaînes, de films et de séries pour des expériences de divertissement immersives.

元記事を表示

【Swift】端末で設定されている週の始まりの曜日を取得する

# はじめに
設定→一般→言語と地域に進むと「週の始まりの曜日」を設定できます。

![スクリーンショット 2024-02-11 21.43.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/3ea37cbe-7a0e-5688-27ee-aa357f44abcb.png)

カレンダー使用するアプリは、この設定によってバグが生まれる可能性があるので注意が必要です。

# 取得方法
“`swift
import SwiftUI

struct ContentView: View {
@State var firstDayOfWeek = Locale.current.firstDayOfWeek

var body: some View {
Text(firstDayOfWeek.rawValue)
}
}
“`

# 試してみる
### 日曜日に設定
|||
|-|-|
|![Simulator Screenshot – iPhon

元記事を表示

OTHERカテゴリの最新記事